欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python爬虫框架Scrapy

程序员文章站 2022-05-06 20:32:56
...

安装wget:
下载一个Wget的源码包,http://www.gnu.org/software/wget/
打开终端进入下载目录解压,

1 输入:tar zxvf wget-1.9.1.tar.gz
2 cd 进入到解压的目录
3 输入:./configure
4 输入:make
5 输入:sudo make install

安装完成!

安装Python框架Scrapy:

pip install scrapy

Mac OS系统为10.11或更高版本安装报错:
重新启动Mac OS,按住Command+R进入Recovery模式
打开终端输入:
csrutil disable
重新启动,重新安装scrapy,成功。

教程:http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/tutorial.html

使用scrapy startproject project创建项目报错:

AttributeError: 'module' object has no attribute 'OP_NO_TLSv1_1'

解决方案:降低twisted的版本

sudo pip install twisted==13.1.0

再次运行scrapy startproject project,成功。

爬虫demo地址:https://github.com/scrapy/quotesbot

运行:

scray list
scrapy crawl toscrape-css
scrapy crawl toscrape-css -o quotes.json

建立了scrapy工程之后,会有一个pipeline.py文件,打开修改这个文件

import json        #记得添加这两个库
import codecs

class XXXPipeline(object):                 #XXX就是你建立scrapy工程的名称
        def __init__(self):                #添加一下初始化方法
                self.file = codecs.open('item.json', 'wb', encoding='utf-8')        #item.json指的是你要保存的json格式文件的名称,编码格式一般都是'utf-8'
        def process_item(self, item, spider):
                line = json.dumps(dict(item),ensure_ascii=False) + '\n'        #这一句会将你每次返回的字典抓取出来,“ensure_ascii=False”这一句话很重要,如果是True的话就是我们保存的\u4e2d\u56fd这种格式了
                self.file.write(line)        #写入到文件中
                return item

然后我们要启用Pipeline这个组件使用我们的修改就需要修改setting.py这个文件
setting.py中默认有ITEM_PIPELINES的代码,默认是注释掉的,将注释去掉,注意这个字典中的’XXX.pipelines.XXXPipeline’与你修改的类名一致才会生效,后边的300正常不需要去修改.
scrapy crawl XXX 运行,scrapy会自动保存json格式文件到item.json文件中