Scrapy是一個爲了爬取網站數據,提取結構性數據而編寫的應用框架。 其能夠應用在數據挖掘,信息處理或存儲歷史數據等一系列的程序中。其最初是爲了頁面抓取 (更確切來講, 網絡抓取 )所設計的, 也能夠應用在獲取API所返回的數據(例如 Amazon Associates Web Services ) 或者通用的網絡爬蟲。Scrapy用途普遍,能夠用於數據挖掘、監測和自動化測試。html
Scrapy 使用了 Twisted異步網絡庫來處理網絡通信。總體架構大體以下python
Scrapy主要包括瞭如下組件:windows
Scrapy運行流程大概以下:網絡
1、安裝架構
一、安裝wheel pip install wheel 二、安裝lxml https://pypi.python.org/pypi/lxml/4.1.0 三、安裝pyopenssl https://pypi.python.org/pypi/pyOpenSSL/17.5.0 四、安裝Twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/ 五、安裝pywin32 https://sourceforge.net/projects/pywin32/files/ 六、安裝scrapy pip install scrapy
注:windows平臺須要依賴pywin32,請根據本身系統32/64位選擇下載安裝,https://sourceforge.net/projects/pywin32/併發
2、爬蟲舉例框架
入門篇:美劇天堂前100最新(http://www.meijutt.com/new100.html)dom
一、建立工程異步
1
|
scrapy startproject movie
|
二、建立爬蟲程序scrapy
1
2
|
cd movie
scrapy genspider meiju meijutt.com
|
三、自動建立目錄及文件
四、文件說明:
注意:通常建立爬蟲文件時,以網站域名命名
五、設置數據存儲模板
items.py
1
2
3
4
5
6
7
8
|
import scrapy
class
MovieItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
name = scrapy.Field()
|
六、編寫爬蟲
meiju.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# -*- coding: utf-8 -*-
import scrapy
from
movie.items import MovieItem
class
MeijuSpider(scrapy.Spider):
name =
"meiju"
allowed_domains = [
"meijutt.com"
]
start_urls = [
'http://www.meijutt.com/new100.html'
]
def parse(self, response):
movies = response.xpath(
'//ul[@class="top-list fn-clear"]/li'
)
for
each_movie
in
movies:
item = MovieItem()
item[
'name'
] = each_movie.xpath(
'./h5/a/@title'
).extract()[0]
yield item
|
七、設置配置文件
settings.py增長以下內容
1
|
ITEM_PIPELINES = {
'movie.pipelines.MoviePipeline'
:100}
|
八、編寫數據處理腳本
pipelines.py
1
2
3
4
|
class
MoviePipeline(
object
):
def process_item(self, item, spider):
with open(
"my_meiju.txt"
,
'a'
)
as
fp:
fp.write(item[
'name'
].encode(
"utf8"
) +
'\n'
)
|
九、執行爬蟲
1
2
|
cd movie
scrapy crawl meiju --nolog
|
十、結果