在爬蟲的過程中,有時候需要從網頁中獲取到json數據,這時候我們可以使用Scrapy框架內置的crawlspider來進行爬取。
在使用crawlspider爬取json數據時,我們需要定義一個規則來匹配到包含json數據的頁面,在規則中使用xpath或者正則表達式來定位到json數據所在的位置。
# 定義規則 rules = ( Rule(LinkExtractor(allow=r'page=\d+')), # 爬取所有頁碼的網頁 Rule( LinkExtractor(allow=r'article/\d+'), callback='parse_article' # 爬取文章頁面,并調用parse_article方法解析頁面數據 ), ) # 解析頁面數據 def parse_article(self, response): # 使用xpath定位到json數據所在的位置 json_data = response.xpath('//script[@type="application/ld+json"]/text()') # 將json數據加載為字典 data_dict = json.loads(json_data.extract_first()) # 獲取所需數據 title = data_dict['headline'] date = data_dict['datePublished'] content = data_dict['articleBody']
在將json數據加載為字典后,我們就可以像操作字典一樣獲取所需的數據。
需要注意的是,獲取到的json數據可能有多個字段,我們需要根據需求取出所需字段。