我有一个url列表,我想抓取并遵循所有相同的管道。我怎么开始呢?我真的不知道从哪里开始。在
主要的想法是我的爬行工程通过一个网站和网页。然后生成解析页面并更新数据库。我现在要实现的是解析数据库中所有现有的url的页面,这些url当天没有被爬网。在
我尝试过使用close_spider
方法在管道中执行此操作,但无法获取这些url以请求/解析。一旦我生成整个close_spider
方法就不再被调用。在
def close_spider(self, spider):
for item in models.Items.select().where(models.Items.last_scraped_ts < '2016-02-06 10:00:00'):
print item.url
yield Request(item.url, callback=spider.parse_product, dont_filter=True)
您可以简单地复制并粘贴到start_url中,如果您没有override start_请求,parse将是默认的回调。如果它是一个很长的列表,并且您不需要难看的代码,那么您可以覆盖start_请求,打开文件或执行db调用,并为其中的每个项生成一个url请求和回调以进行解析。这将允许您使用解析函数和管道,并通过scray处理并发。如果你只是有一个没有额外基础设施的列表,并且列表不太长,Sulot的答案就更容易了。在
(重读你的帖子,我不确定我是否回答了你的问题…) 我已经做了一些类似的事情没有刮毛,但模块lxml和请求 网址:
listofurl=['url1','url2']
或者,如果Url有一个模式,则生成它们:
然后我创建了一个循环,解析具有相同模式的每个url: 导入json 从lxml导入html 导入请求
^{pr2}$相关问题 更多 >
编程相关推荐