如果比lastmod date -Scrapy更新,则抓取网址

时间:2017-09-15 09:07:25

标签: python scrapy sitemap

您好我只想抓取lastmod日期比特定日期更新的网页。

例如:如果lastmod是14/9/2017或更新,则仅抓取网址。

我使用此代码来抓取所有页面,但我无法根据lastmod日期对其进行限制:

import requests
from scrapy.spiders import SitemapSpider
from urllib.parse import urljoin


class MySpider(SitemapSpider):
    name = 'sitemap_spider'
    robots_url = 'http://www.example.org/robots.txt'

    sitemap_urls = [robots_url]
    sitemap_follow = ['products-eg-ar']

    def parse(self, response):
        print(response.url)

这是我的robots.txt

sitemap: /sitemap-products-eg-ar-index-1-local.xml

sitemap-products-eg-ar-index-1-local.xml包含:

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
     <loc>/sitemap-products-eg-ar-1.xml</loc>
  </sitemap>
  <sitemap>
     <loc>/sitemaps/sitemap-products-eg-ar-2.xml</loc>
  </sitemap>
</sitemapindex>

sitemap-products-eg-ar-2.xml包含:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
  <loc>/product-8112041/i/</loc>
  <priority>0.8</priority>
  <lastmod>2017-06-17</lastmod>
  <changefreq>daily</changefreq>
 </url>
</urset>

1 个答案:

答案 0 :(得分:1)

标准SitemapSpider类无法做到这一点。您必须对其进行子类化并修改其处理_parse_sitemap的{​​{1}}方法。由于此方法在内部使用urlset模块中的iterloc函数,因此更脏的解决方案就是重新定义该函数以考虑sitemap元素。像这样:

lastmod