python-scrapy(2)

项目名称为ITcast


python-scrapy(2)_第1张图片
python-scrapy(2)_第2张图片


python-scrapy(2)_第3张图片

   当执行爬虫的yield item时 就会调用图二中的管道文件(不过需要在setting.py中配置,ITEM_PIPELINES这一行中配置,在这个字典中所包含的管道才可以被调用,同理可以在里面加上自定义管道,比如数据库管道什么的,并且后面的数字是优先级,0-1000之间,值越小优先级越高)每个item都会执行这些管道

图二中:

第一个函数:初始化

第二个函数:因为返回的内容存在中文,所以将item返回的数据进行转换,然后写入文件,再返回item告诉引擎已经处理完毕

第三个函数:在关闭的时候关闭文件


一般在新建目录里去执行

python-scrapy(2)_第4张图片

这是爬虫主要内容,解释都已经已备注形式写上去了,还有一点是下面输出的name[0]是因为xpath对象是一个列表,用[0]才可以,还有就是xpath("./h3/test()")之前的那个点是指从当前节点,不加的话会变成根节点

但这是并没有用到item字段,那么怎么去交互呢

item部分

python-scrapy(2)_第5张图片
定义item部分是定义item字典的键,有了键才会有下图加入的值
python-scrapy(2)_第6张图片

然后可以scrapy crawl itcast -o itcast.json 输出成为json文件,不过都是unicode字符串,到时候扔到网站解码即可

当然不仅仅是.json格式,还可以输出.csv  .jsonl   .xml等四种文件格式

这里的item因为是列表,但返回给引擎时引擎无法识别,所以只能用-o来处理

有时输出文件并不是我们所需要的,如果我们想存入数据库应该怎么办,那么就需要管道了

在start_urls里面可以加更多的网址,这些网址用多线程执行,

爬虫启动的时候,找到start_urls里面的内容,提取url,封装成请求,交给引擎,引擎交给调度器入队列,去重处理之后再交给下载器下载,下载器返回的响应文件交给parse方法处理,在parse方法里根据xpath返回的节点,迭代每个节点,我们将每个xpath对象extract后,放到我们定义好的item字段里,再把item字段放到列表里

你可能感兴趣的:(python-scrapy(2))