2024-06-28 19:53:52 发布
网友
问题是,如果我直接将产品url添加到“start_url”中,一切都会正常工作。但当产品页面在爬网过程中出现时(所有爬网页面都返回“200”),它不会刮取。。。。 我在给蜘蛛查一下:
scrape crawl site_products -t csv -o Site.csv
卡盘代码:
我错过了什么?在
我已经测试过,这个网站似乎屏蔽了所有非标准的用户代理(返回403)。因此,请尝试将user_agent类paremeter设置为常见的值,例如:
user_agent
class SiteProducts(CrawlSpider): name = 'site_products' user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0'
或者在项目中设置它settings.py:
settings.py
您可以在web上找到更多的用户代理字符串,例如official mozzila docummentation
编辑: 经过进一步检查,我发现你的LinkExtractor逻辑有问题。linkextractor按定义的规则顺序提取,并且您的提取器溢出,这意味着第一个具有follow的linkextractor也将提取产品页面,这意味着您拥有的product link提取器将抓取先前已爬网的页面并进行重复筛选。在
你需要修改你的第一个linkextractor来避免产品页面。只需将allow参数从linkextractor复制到第一个linkextractor的deny参数,就可以做到这一点。在
allow
deny
我已经测试过,这个网站似乎屏蔽了所有非标准的用户代理(返回403)。因此,请尝试将
user_agent
类paremeter设置为常见的值,例如:或者在项目中设置它
^{pr2}$settings.py
:您可以在web上找到更多的用户代理字符串,例如official mozzila docummentation
编辑:
经过进一步检查,我发现你的LinkExtractor逻辑有问题。linkextractor按定义的规则顺序提取,并且您的提取器溢出,这意味着第一个具有follow的linkextractor也将提取产品页面,这意味着您拥有的product link提取器将抓取先前已爬网的页面并进行重复筛选。在
你需要修改你的第一个linkextractor来避免产品页面。只需将
allow
参数从linkextractor复制到第一个linkextractor的deny
参数,就可以做到这一点。在相关问题 更多 >
编程相关推荐