gpt4 book ai didi

python - Scrapy 抓取过期域名

转载 作者:行者123 更新时间:2023-11-28 17:29:07 26 4
gpt4 key购买 nike

我正在使用 Scrapy 来抓取不同的网站,但实际上我的脚本会跟踪每个网站并将域添加到数据库中,在我使用 PHP 脚本检查过期域之后。

我希望有人能够帮助我改进我的脚本,因为实际的脚本没有针对我的需要进行优化!

我不知道为什么,但是爬虫会立即跳转到不同的网站,找到“起始网址”,如果脚本完成扫描第一个网站,然后再跳转到另一个网站,那就更好了。

如何在将域添加到数据库之前直接检查域是否已过期?

我的爬虫:

from scrapy.spiders import CrawlSpider, Rule
from dirbot.settings import *
from scrapy.linkextractors.lxmlhtml import LxmlLinkExtractor
from scrapy.item import Item, Field
from urlparse import urlparse

class MyItem(Item):
url= Field()

class someSpider(CrawlSpider):
name = 'expired'
start_urls = ['http://domain.com']

rules = (Rule(LxmlLinkExtractor(allow=()), callback='parse_obj', follow=True),)

def parse_obj(self,response):
item = MyItem()
item['url'] = []
for link in LxmlLinkExtractor(allow='/.com|.fr|.net|.org|.info/i',deny = '/.jp|facebook|amazon|wordpress|blogspot|free.|google|yahoo|bing|znet|stackexchange|twitter|wikipedia/i').extract_links(response):
parsed_uri = urlparse(link.url)
url = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)
insert_table(url)

最佳答案

在您的代码中,您可以按如下方式检查响应代码:

class someSpider(CrawlSpider):
name = 'expired'
start_urls = ['http://domain.com']

rules = (Rule(LxmlLinkExtractor(allow=()), callback='parse_obj', follow=True),)

def parse_obj(self,response):
item = MyItem()
item['url'] = []
if response.status == 404:
# Do if not available
pass
elif response.status == 200:
# Do if OK
insert_table(url)
for link in LxmlLinkExtractor(allow='/.com|.fr|.net|.org|.info/i',deny = '/.jp|facebook|amazon|wordpress|blogspot|free.|google|yahoo|bing|znet|stackexchange|twitter|wikipedia/i').extract_links(response):
parsed_uri = urlparse(link.url)
url = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)

elif response.status == 500:
# Do if server crash
pass

我添加了代码来解析网站链接,以防网站初始请求为您提供 http 200 OK 响应代码。

希望对你有帮助。

关于python - Scrapy 抓取过期域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com