scrapy安裝以及簡單使用
-
1.進入終端,輸入命令
pip install scrapy
安裝模塊。安裝成功后,新建一個項目,輸入命令scrapy startproject douban
,這樣就能看到一個douban文件夾,目錄結構如下:
介紹下各個文件的作用
scrapy.cfg:項目的配置文件
douban/items.py:項目的items文件
douban/pipelines.py:項目的pipelines文件
douban/settings.py:項目的設置文件
douban/spiders/:存儲爬蟲的目錄
明確在Item中需要爬取的數據
-
1.抓取豆瓣電影的片名(movie_name)、導演(movie_director)、編劇(movie_writer)、演員(movie_actor)、上映日期(movie_date)、片長(movie_long)、電影描述(movie_description)。在scrapy中,Item是用來加載抓取內容的容器,類似于python中的字典。比如movie_name就像字典中的鍵,爬取到的數據就是字典中的值。
制作爬蟲
-
2.1 制作爬蟲分成兩步:先爬后取,首先獲取網頁的所有內容,然后取出對我們有用的部分。下面寫一只爬蟲,命名為DoubanSpider.py保存在douban\spiders目錄下,代碼如下:
name是唯一的命名,運行scrapy crawl douban
這里的douban就是這個name,allow_domains
是搜索的域名范圍,這里的start_urls
為空,在后面的函數會進行填充。 2.2 很多情況下我們是直接在
start_urls
中存入的頁面url,但是這里我們爬取的鏈接有很多而且是有規律的。那么解釋下start_requests
這個方法是干什么的:
def start_requests(self):
for url in self.start_urls:
yield self.make_requests_from_url(url) #可見是從start_urls中讀取鏈接,使用make_requests_from_url生產Request
可見`start_requests` 是系統默認調用的,我們可以重寫這個函數,根據需求定制自己的start_urls。豆瓣電影的url是`http://movie.douban.com/subject_search?search_text=` +`電影名`。這里定制了請求頭,不加請求頭發現訪問404錯誤

-
2.3 parse函數,上面執行了請求,回調函數即為parser。scrapy幫助我們處理Request請求,會獲得請求的url網站的響應response,我們重寫parser函數:
在這個函數中我們獲得電影的url鏈接,使用的是xpath方法,同樣也可以使用css方法,語法可以查詢http://www.w3school.com這個網站。獲得url后繼續發送Request請求,回調函數是自定義的parse_movie函數。 -
2.4 在回調函數parse_movie中我們真正抓取我們要的數據,這里進入的就是電影的具體界面,使用的仍然是xpath方法。作為一只爬蟲,Spider希望將其抓取的數據存放到Item zhong ,這里定義了前面的DoubanItem對象,把爬取到的內容存入到該對象中。
運行命令scrapy crawl douban
就能在終端看到打印出的數據
存儲內容
-
1.保存信息有4種方式:json,json lines,csv,xml。假如這里用json導出,命令如下:
scrapy crawl douban -o items.json -t json
-o后面是導出文件名,-t后面是導出類型
- 2.當Item在Spider中被收集之后,將會被傳遞到Item Pipeline,一些組件會按照一定的順序執行對Item處理。我們要編寫自己的item pipeline,每個item pipeline都是個獨立的python類,必須實現process_item(self, item, spider)方法。
* item(Item對象) - 被爬取的item
* spider(Spider對象) -爬取該item的spider

將所有的item存儲到items.json文件中,每行包含一個序列化為json格式的item,且參數ensure_ascii=False解決了json格式的中文編碼問題。
- 3.啟動一個Item Pipeline 組件,你必須將它的類添加到 ITEM_PIPELINES 配置,修改settings.py配置文件,加入如下,:

按照工程名.pipelines.自定義pipeline組建類名格式編寫,后面的數字通常定義在0-1000之間。
- 4.至此整個豆瓣爬蟲制作完成,在終端進入目錄運行`scrapy crawl douban` ,items.json文件中就保持了我們抓取到的item。內容如下,想要多抓的話在電影文本里多加幾個電影名:
