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文件中