我正在使用python 3.5上的scrapy构建一个刮刀。
我正在人群资助论坛中抓取项目并将数据保存在hdf5文件中。
通过读取网址列表来完成对项目的刮擦,这些网址被抓取,然后将每个项目的信息保存为表格行(具有多列)。这是我的脚本的顶部:
class ExperimentScraperSpider(scrapy.Spider):
name = 'project_scraper'
allowed_domains = ['projectname.com']
dt = pd.read_csv("urls.csv") #list of urls
start_urls = dt["url"].tolist()
def parse(self, response):
title = response.css('h1.title::text').extract_first() #name of project
tags = response.css('a.tag.category::text').extract() #project tags
...
不幸的是,一些项目信息被放置在子链接中(例如...... /方法)。我想将此链接中的信息与项目中的其他信息一起提供到hdf5文件的同一行。怎么办呢?
我可以在我已经使用的解析器中构建一个解析器吗?
答案 0 :(得分:1)
一种方法是使用requests chaining方法。在这里,您可以从后续页面收集数据,并在Request
s meta
属性中传递临时数据,直到您最终生成完整项目。
另一种方法是使用scrapy-inline-requests
库。在这里,您可以将临时数据提取合并到主解析方法中。