【问题标题】:Web Scraping within Links using Scrapy使用 Scrapy 在链接中进行网页抓取
【发布时间】:2020-08-31 18:18:22
【问题描述】:

我正在从一个包含多页数据的网​​站中抓取信息。在每次抓取中,我都提取了一些信息。但是,我还想进入我正在抓取的内容的链接并从那里抓取信息,然后返回该站点并继续抓取。我将如何使用 Scrapy 做到这一点?

【问题讨论】:

  • 嗨,悲伤的蟾蜍,您能否向我们展示您已经尝试过的内容以及您尝试抓取的网站?请更新您的问题,以便人们可以帮助您。
  • 让我们调用页面有结果列表index_page;让我们调用页面有详细数据detail_page,所以你想从index_page中提取detail_page url,然后你想去detail_page抓取详细数据?你不知道怎么通过scrapy去detail_page?
  • 如果您想从主页和详细信息页面获取数据以创建一行数据,则可以使用Request(url_to_details, meta={"data":data_from_main_page}, parse_details})。但是您不想从许多页面中创建一行然后您要求知识,您可以在任何教程或文档中找到这些知识,而您只会浪费时间询问它。

标签: python html web web-scraping scrapy


【解决方案1】:
【解决方案2】:

您可以使用 递归 来实现所需的目标。首先抓取一个起始链接,然后递归迭代其中的链接并继续。请注意,此递归可能需要很长时间,并且在某些情况下最终可能会禁止您的 scraper。尝试将递归深度限制为 2 或 3。

代码片段:

from scrapy.linkextractors import LinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.item import Item, Field
from scrapy.http import Request

class MyItem(Item):
    url= Field()

class MySpider(CrawlSpider):
    name = 'twitter.com'
    allowed_domains = ['twitter.com']
    start_urls = ['http://www.twitter.com']

    rules = (Rule(LinkExtractor(), callback='parse_url', follow=False), )

    def parse_url(self, response):
        item = MyItem()

        ## Do your processing here

        item['url'] = response.url
        request = Request(response.url)
        yield request

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2021-01-13
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    相关资源
    最近更新 更多