scrapy基于终端的持续化存储的, 有些注意事项

基于终端的持续化存储的使用

使用命令:

1
2
scrapy crawl spiderName -o filePath

好处: 简洁高效便捷
基于终端的持续化要只能对 parse 方法返回值进行存储.
而且存储的文件, 必须是 json , jsonlines, jl, csv, xml , marshal, pickle 格式的文件.

注意事项

而且 parse 方法返回的值, 必须是字典类型或者列表嵌套字典, 也就是必须返回 json , 如果是 普通的列表类型或者字符串类型,都会报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import scrapy


class PornhubSpider(scrapy.Spider):
name = 'pornhub'
# allowed_domains = ['xxx.com']
start_urls = ['https://www.csdn.net/?spm=1001.2014.3001.4476']

def parse(self, response):
li_list = response.xpath('//ul[@class="nav_center_wrap"]/li')
content = list()
dict_data = dict()
for i in li_list:
# 把 selector 中的 dataS属性提取
ele = i.xpath('./a/text()').extract()
# print(ele)
# 把列表里的元素转成字符串
# ele = "".join(ele)
# print(ele)
content.append(ele)
# print(content)
dict_data["课程"] = content
# return content # 返回content 会报错
return dict_data