目标
使用Scrapy和Python制作两级深度web爬虫。
问题
该网站是在一个结构,在1页,有大约10个项目,爬虫是跟随链接和提取正确的数据。问题是这个结构对于10页是递归的,但是这些最后的页面的链接是更改的,并且是指向home1的,但是指向home2的。对于第2页到第10页,我们希望爬虫执行相同的例程,因为爬虫所尊重的模式对于这些页面是递归重复的。
网站结构
->website.com
--> /home1
---> /page/2
--> /home2/doc/item我可以使用下一个爬虫访问第一级的数据。
一级爬虫
from scrapy.contrib.spiders import CrawlSpider, Rule
from mySpider.items import Item
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name="spider"
allowed_domains = ["website.com"]
start_urls = ["https://website.com/home1/"]
rules = [Rule(LinkExtractor(allow=('(/home2/doc/item((?!:).)*$'),), callback="parse_item", follow=True)]
def parse_item(self, response):
item = Item()
name = response.xpath('//h3/text()')[0].extract()
item['name'] = name
return item发布于 2017-07-19 09:47:12
我不确定我完全理解您的问题,但是,如果您试图从第一页抓取多个URL,您可以在start_urls数组中列出它们。这将使您可以独立地抓取每个页面。
start_urls = [
"https://website.com/home1/",
"https://website.com/home2/",
"https://website.com/home3/"
]但是,如果您希望爬行home1并跟踪URL的顺序,以便您可以在下面的home2、home3等中爬行它们,您可以创建一个全局列表并将URL保存到列表中。另一个选项是创建一个URL列表,并使用带有scrapy.Request的meta属性将它们传递给以下请求。
请澄清,用例很难理解。
https://stackoverflow.com/questions/45151469
复制相似问题