首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Scrapy爬行多个页面

用Scrapy爬行多个页面
EN

Stack Overflow用户
提问于 2017-07-17 18:44:16
回答 1查看 939关注 0票数 0

目标

使用Scrapy和Python制作两级深度web爬虫。

问题

该网站是在一个结构,在1页,有大约10个项目,爬虫是跟随链接和提取正确的数据。问题是这个结构对于10页是递归的,但是这些最后的页面的链接是更改的,并且是指向home1的,但是指向home2的。对于第2页到第10页,我们希望爬虫执行相同的例程,因为爬虫所尊重的模式对于这些页面是递归重复的。

网站结构

代码语言:javascript
复制
->website.com
-->          /home1
--->               /page/2
-->          /home2/doc/item

我可以使用下一个爬虫访问第一级的数据。

一级爬虫

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2017-07-19 09:47:12

我不确定我完全理解您的问题,但是,如果您试图从第一页抓取多个URL,您可以在start_urls数组中列出它们。这将使您可以独立地抓取每个页面。

代码语言:javascript
复制
start_urls = [
    "https://website.com/home1/",
    "https://website.com/home2/",
    "https://website.com/home3/"
]

但是,如果您希望爬行home1并跟踪URL的顺序,以便您可以在下面的home2、home3等中爬行它们,您可以创建一个全局列表并将URL保存到列表中。另一个选项是创建一个URL列表,并使用带有scrapy.Request的meta属性将它们传递给以下请求。

请澄清,用例很难理解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45151469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档