scrapy 是乙個用 python 開發的爬蟲框架,用於抓取 web 頁面並提取其中的結構化資料。
安裝
首先,確定你的電腦上已經安裝了 python 3 以及對應的 pip。可以使用下面的命令檢視:
$ python3 --version如果沒有安裝的話,推薦使 homebrew 這個工具來進行安裝。python 3.6.3
$ pip3 --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
$ pip3 install scrapy教程:乙個抓取豆瓣電影 top 250 的爬蟲
首先,我們使用下面的命令來建立並初始化 scrapy 專案:
$ scrapy startproject doubanmovie這樣便會在當前目錄下建立乙個 doubanmovie 的爬蟲專案,其內部結構如下:
$ tree其中:.├── doubanmovie
│ ├── __init__.py
│ ├── __pycache__
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ └── __pycache__
└── scrapy.cfg
scrapy.cfg 為 scrapy 專案的核心配置檔案
items.py 用於定義爬蟲程式爬取到的資料實體的屬性結構
piplines.py 用於定義爬蟲程式每次爬取到的資料實體進行後續處理的操作流程,比如寫入檔案系統或資料庫
settings.py 為爬蟲程式的配置檔案,可以在這裡定義多個 pipline 和 middleware
spiders 資料夾中存放爬蟲檔案
接著,我們需要在 items.py 檔案中定義電影實體的屬性結構:
class doubanmovieitem(scrapy.item):然後,我們使用下面的命令來建立乙個名為 doubanspider 的爬蟲程式:# define the fields for your item here like:
# name = scrapy.field()
rank = scrapy.field() # 豆瓣排名
title = scrapy.field() # 電影名稱
poster = scrapy.field() # 電影海報
link = scrapy.field() # 鏈結位址
rating = scrapy.field() # 豆瓣評分
pass
$ scrapy genspider moviespider douban.com執行之後會在 spiders 目錄下生成乙個名為 moviespider.py 的爬蟲檔案,內部定義了爬蟲的名稱、作用域及起始 url 等基本資訊,以及乙個解析函式,該函式的主要功能便是通過 xpath 分析頁面中的 html 元素,並將解析結果輸出:
class moviespiderspider(scrapy.spider):通過爬蟲解析後的實體資料,會通過一種 pipeline 的過程將結果進行列印輸出、存入檔案或資料庫等:name = 'moviespider'
allowed_domains = ['douban.com']
start_urls = ['']
def parse(self, response):
movie_items = response.xpath('//div[@class="item"]')
for item in movie_items:
movie = doubanmovieitem()
movie['rank'] = item.xpath('div[@class="pic"]/em/text()').extract()
movie['title'] = item.xpath('div[@class="info"]/div[@class="hd"]/a/span[@class="title"][1]/text()').extract()
movie['poster'] = item.xpath('div[@class="pic"]/a/img/@src').extract()
movie['link'] = item.xpath('div[@class="info"]/div[@class="hd"]/a/@href').extract()
movie['rating'] = item.xpath('div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()
yield movie
pass
class doubanmoviepipeline(object):def process_item(self, item, spider):
print('豆瓣排名:' + item['rank'][0])
print('電影名稱:' + item['title'][0])
print('豆瓣評分:' + item['rating'][0] + '\n')
return item
from scrapy.**********middlewares.useragent import useragentmiddleware最後,我們將上述修改寫入配置檔案:class fakeuseragentmiddleware(useragentmiddleware):
def process_request(self, request, spider):
# enable or disable ********** middlewares執行 scrapy crawl moviespider 命令,便會在控制台中輸出爬取到的資料。# see
**********_middlewares =
# configure item pipelines
# see
item_pipelines =
網路爬蟲框架 Scrapy
網路爬蟲框架 scrapy 簡介 開源的python爬蟲框架,用於抓取web站點並從頁面中提取結構化的資料 用途廣泛,可用於資料探勘 監測和自動化測試 scrapy優點 快速強大 量簡潔便可完成爬取 易擴充套件 可新增新的功能模組 scrapy高階特性 內建資料抽取器css xpath re 互動式...
爬蟲框架scrapy入門(一)
這段時間一直在學爬蟲,做了一些簡單的專案,爬取資料的過程中,被封過ip,需要翻牆,為了大規模的資料採集,開始學習scrapy框架。參照的是靜覓大神的 python3網路爬蟲開發實戰 本次爬取的 是scrapy官網 建議使用anaconda的一鍵安裝,我的電腦上同時有anaconda和pycham,一...
Python爬蟲框架scrapy入門
寫好,程式開始執行.spider 老大要我處理 x.com。引擎 你把第乙個需要處理的url給我吧。spider 給你,第乙個url是 x.com。引擎 hi!排程器,我這有request請求你幫我排序入隊一下。排程器 好的,正在處理你等一下。引擎 hi!排程器,把你處理好的request請求給我。...