2022-2-21 06:01| 发布者: 笨鸟自学网| 查看: 8740| 评论: 0
SiteMapSpider允许您通过使用 Sitemaps .
它支持嵌套的站点地图和从中发现站点地图URL robots.txt .
指向要爬网其URL的网站地图的URL列表。
您也可以指向 robots.txt 它将被解析为从中提取站点地图URL。
元组列表 (regex, callback) 在哪里?
(regex, callback)
regex 是一个正则表达式,用于匹配从站点地图中提取的URL。 regex 可以是str或已编译的regex对象。
regex
回调是用于处理与正则表达式匹配的URL的回调。 callback 可以是字符串(指示spider方法的名称)或可调用的。
callback
例如::
sitemap_rules = [('/product/', 'parse_product')]
规则按顺序应用,只使用第一个匹配的规则。
如果省略此属性,则在站点地图中找到的所有URL都将使用 parse 回调。
parse
应遵循的站点地图正则表达式列表。这只适用于使用 Sitemap index files 指向其他站点 Mapfile 。
默认情况下,将遵循所有站点地图。
指定是否为一个 url 应该遵循。这些是同一网站的链接,使用同一网站内传递的另一种语言 url 块。
url
<url> <loc>http://example.com/</loc> <xhtml:link rel="alternate" hreflang="de" href="http://example.com/de"/> </url>
用 sitemap_alternate_links 设置,这将检索两个URL。用 sitemap_alternate_links 只有残疾人 http://example.com/ 将被取回。
sitemap_alternate_links
http://example.com/
sitemap_alternate_links 残疾人。
这是一个过滤器函数,可以重写该函数以根据其属性选择站点地图条目。
<url> <loc>http://example.com/</loc> <lastmod>2005-01-01</lastmod> </url>
我们可以定义一个 sitemap_filter 要筛选的函数 entries 日期:
sitemap_filter
entries
from datetime import datetime from scrapy.spiders import SitemapSpider class FilteredSitemapSpider(SitemapSpider): name = 'filtered_sitemap_spider' allowed_domains = ['example.com'] sitemap_urls = ['http://example.com/sitemap.xml'] def sitemap_filter(self, entries): for entry in entries: date_time = datetime.strptime(entry['lastmod'], '%Y-%m-%d') if date_time.year >= 2005: yield entry
这只能找回 entries 2005年及以后年份修改。
条目是从站点地图文档中提取的dict对象。通常,键是标记名,值是其中的文本。
重要的是要注意:
由于loc属性是必需的,因此不带此标记的条目将被丢弃。
备用链接用键存储在列表中 alternate (见 sitemap_alternate_links )
alternate
名称空间被删除,因此名为 {{namespace}}tagname 成为唯一 tagname
{{namespace}}tagname
tagname
如果省略此方法,则将处理站点地图中找到的所有条目,同时观察其他属性及其设置。
Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )
GMT+8, 2025-8-31 12:09 , Processed in 0.021183 second(s), 18 queries .
Powered by Discuz! X3.5
© 2001-2017 Discuz Team. Template By 【未来科技】【 www.wekei.cn 】