1. 程式人生 > >Python爬蟲框架Scrapy

Python爬蟲框架Scrapy

安裝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檔案中