您好我只想抓取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>
答案 0 :(得分:1)
标准SitemapSpider
类无法做到这一点。您必须对其进行子类化并修改其处理_parse_sitemap
的{{1}}方法。由于此方法在内部使用urlset
模块中的iterloc
函数,因此更脏的解决方案就是重新定义该函数以考虑sitemap
元素。像这样:
lastmod