我是Scrapy的新手,我正在尝试构建一个爬虫,它根据标签的类名来解析响应。()根据URL定义回调函数,使用allow和deny,但这对我来说不起作用。起作用的是,如果标记具有特定的类名(比如“item”),它应该转到回调parse_item()。
我试图实现的是,我的爬虫访问所有网站链接从一个基本的URL,并根据类名的标签,它应该存储的数据。
于是说:
- 基本URL = example.com
- 在此基本URL上有2个链接:和
- 爬行器应该访问这两个URL并在其中查找其他链接,但只查找class=“item”的链接,我想实际存储该页面的HTML。
LinkExtractor()有一个函数process_values(),用于处理attr()的值,但我不知道如何才能做到这一点,我尝试了以下方法:
class NewSpider(CrawlSpider):
name = 'newspider'
start_urls = ['https://example.com']
allowed_domains = ['example.com']
rules = (
Rule(LinkExtractor(attrs=('class',), process_value=(lambda x: True if (x == 'class_name') else False)), callback="parse_items"),)
)
def parse_items(self, response):
# store data
1条答案
按热度按时间pftdvrlh1#
如果你想回调parse_xxx if tag是xxx,你应该传递一个参数给默认的parse方法来定义回调函数,我以前写过一个spider来解析一个spider中的多个域。例如: