如何在Python2.7中创建有效的爬虫程序
我正在抓取一些衣服的网络,以获取它们的价格和每种产品的信息,但根据我的实际算法,需要几天才能完成,并获取每种产品的每个不同链接。例如,如果产品有5种颜色的5个链接,那么它会有5个链接,我有一个92k条目的数据库,只有5k个产品,例如: 相同的产品ID(所以是相同的产品),但链接不同 因此,我需要想法以及如何实施它们来改进这一点,例如,我有产品ID,因此,如果我已经访问了一个包含该ID的链接,我不想再次访问该链接。我想爬过所有的网页,但只访问包含产品的网页。。。但我不知道如何实现这两个想法:/ 下面是我目前的代码(太慢,重复太多): 例如,在那个爬虫程序中,我使用“#C”一词来知道它是一个产品页面并获取它的信息,但我不知道如何区分该url是否有我已经访问过的产品ID,我也不知道如何避免不相关的url,这就是为什么程序太慢,并且获得很多相同的链接 谢谢你的帮助,任何你能改进的都会很棒的^^我建议你使用。我的答案是基于它的巨大特点 引用您的疑问:如何在Python2.7中创建有效的爬虫程序,python,web-scraping,beautifulsoup,web-crawler,Python,Web Scraping,Beautifulsoup,Web Crawler,我正在抓取一些衣服的网络,以获取它们的价格和每种产品的信息,但根据我的实际算法,需要几天才能完成,并获取每种产品的每个不同链接。例如,如果产品有5种颜色的5个链接,那么它会有5个链接,我有一个92k条目的数据库,只有5k个产品,例如: 相同的产品ID(所以是相同的产品),但链接不同 因此,我需要想法以及如何实施它们来改进这一点,例如,我有产品ID,因此,如果我已经访问了一个包含该ID的链接,我不想再次访问该链接。我想爬过所有的网页,但只访问包含产品的网页。。。但我不知道如何实现这两个想法:/
我不知道如何避免不相关的URL 回答:为了避免访问不相关的URL,您应该根据您的用例使用具有特定逻辑的爬虫程序。也就是说,您可以使用并定义自己的规则,其中每个规则定义了对站点进行爬网的特定行为,这样您就不会访问不相关的URL 以下是一个例子:
…但我不知道如何区分url是否有产品ID 我已经去过了 回答:默认情况下,Scrapy使用
RFPDupeFilter
作为其DUPEFILTER\u类,用于检测和过滤重复请求RFPDupeFilter
使用scrapy.utils.request.request\u fingerprint
功能根据请求指纹进行过滤
这是重复请求的一个粗略日志输出示例:
2015-11-23 14:26:48 [scrapy] DEBUG: Filtered duplicate request: <GET http://doc.scrapy.org/en/latest/topics/request-response.html> - no more duplicates will be shown (see DUPEFILTER_DEBUG to show all duplicates)
2015-11-23 14:26:48[scrapy]调试:已过滤的重复请求:-将不再显示重复项(请参阅DUPEFILTER\u调试以显示所有重复项)
如果您还没有使用过Scrapy,这里有一个Scrapy教程:您考虑过使用它吗?我对Scrapy有0个想法:/我不知道如何将它转换为Scrapy并添加我正在寻找的规则
2015-11-23 14:26:48 [scrapy] DEBUG: Filtered duplicate request: <GET http://doc.scrapy.org/en/latest/topics/request-response.html> - no more duplicates will be shown (see DUPEFILTER_DEBUG to show all duplicates)