【问题标题】:Scrapy - scrap xml sitemap then follow linkScrapy - 报废 xml 站点地图,然后点击链接
【发布时间】:2022-08-14 07:06:14
【问题描述】:

我开始学习scrapy,我想废弃一个sitemap.xml以废弃其中的所有页面,然后从站点地图中废弃页面内的特定链接。

例如:

在我的站点地图上,我有 link1。我转到 link1 并在页面内部,我想废弃一个名为 linkA 的特定链接以获取此链接的内容页面。

首先,我定义了正则表达式规则parse_step1.它允许我从站点地图中获取特定的网址。它运作良好。

然后,我不知道如何告诉我的刮刀\"从链接中抓取页面,找到一个特定的url,然后抓取这个特定url的页面内容\".

我尝试添加由正则表达式验证的第二条规则,但我无法使其工作。

class SiteSpider(SitemapSpider):
    name = \'site\'
    allowed_domains = [\'domain.fr\']
    # generate_start_urls()
    sitemap_urls = [\"https://domain.fr/mainsitemap.xml\"]
    sitemap_rules = [(\'^.*\\/([a-zA-Z]{2})\\/\\/?.*\', \'parse_step1\'),
                     (\'.*\\/[0-9]{2}\', \'parse_step2\')
                     ]

请问有什么见解吗?

谢谢

    标签: python web-scraping scrapy


    【解决方案1】:
    1. 你有一个网站链接可以传递给你的 Scrapy 脚本
    2. 您在报废期间获得了一些其他链接
    3. 将此链接传递给您的 Scrapy 脚本
    4. 重复

      例如。如果有带有 link1 和 link2 的 Site1 并且在 link1 之后,您会到达带有 link3 的 Site2 ...所以在这里您可以使用 Depth First Search algorithm 来实现它。

      -> 您可以将所有收集的链接存储在某个列表中。并在解析器函数的开头添加一个计数器。因此,每次您转到另一个链接时 - 将 1 添加到您的计数器 - 这将是当前链接的索引。一旦网站没有任何链接 - 您将转到最新的未解析链接(例如,当您获得其中两个并关注第一个时)。您可以通过recursion 调用您的函数来实现它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多