Python爬蟲框架Scrapy

2021-09-07 07:00:46 字數 3302 閱讀 9468

scrapy是乙個流行的python爬蟲框架, 用途廣泛.

使用pip安裝scrapy:

pip install scrapy
scrapy由一下幾個主要元件組成:

首先engine從scheduler中獲得一項任務(url), 並將其封裝為乙個請求(request)交給**********.

scrapy使用twisted提供的網路io非同步支援, 效能出色.

在實際編寫爬蟲之前,首先要建立乙個專案. 在專案目錄的父目錄中執行命令:

scrapy startproject scrapydemo
建立乙個名為scrapydemo的專案, 目錄結構如下:

|- scrapy.cfg

|- scrapydemo

|- __init__.py

|- items.py

|- pipelines.py

|- settings.py

|- spiders

|- __init__.py

spider用於解析頁面內容, 生成item.

在spiders包下建立python指令碼myspider:

from scrapy import spider

class myspider(spider):

name = "cnblogs"

allowed_domains = ["cnblogs.com"]

start_urls = [

"",]

def parse(self, response):

filename = response.url.split("/")[-2]

with open(filename, 'wb') as f:

f.write(response.body)

重寫spider類需要定義幾個必須的成員:

parse方法是spider的核心, parse方法可以yield或返回兩類物件:

在專案根目錄中執行命令開始爬取:

scrapy crawl cnblogs
在spider.parse中使用選擇器(selector)來解析html(xml), selector採用xpath表示式來選擇xml中的元素.

def parse(self, response):

for e in response.xpath('//ul/li'):

title = e.xpath('a/text()').extract()

link = e.xpath('a/@href').extract()

desc = e.xpath('text()').extract()

print title, link, desc

選擇器提供了四個方法:

常用xpath表示式:

css()方法則是使用css選擇器進行選擇:

更多關於xpath的內容參見菜鳥教程

更多關於selector的講解

item的行為類似dict, 用於儲存spider解析得到的資料:

from scrapy.item import item, field

class myitem(item):

name = field()

content = field()

url = field()

在spider.parse中將結果以item的形式返回:

def parse(self, response):

items =

for post in response.xpath('//a[@class="posttitle2"]'):

item = myitem()

name = post.xpath('text()').extract()[0]

url = post.xpath('@href').extract()[0]

print('post:', name, url)

item['name'] = name

item['url'] = url

return items

更多關於item的內容參見這裡

定義乙個python類,然後實現process_item(self, item, spider)方法即可作為乙個pipeline中乙個過濾器的實現.

process_item的item引數為要處理的專案, spider則是相應的spider物件.process_item返回的item物件將交給下個過濾器處理, 或者或者丟擲dropitem異常丟棄這個item.

from scrapy.exceptions import dropitem

class stopwordpipeline:

def process_item(self, item, spider):

if item['name'] in stop_words:

raise dropitem(item['name'])

return item

註冊item只需要在settings.py中新增:

item_pipelines =
值表示pipeline的執行順序,從低到高執行,範圍0-1000.

scrapy使用engine排程spider, 不便於除錯.scrapy提供了shell, 在python shell環境中建立上下文以便於除錯. 啟動shell:

scrapy shell
可以在shell下除錯選擇器:

Python爬蟲框架

一 u know!二 scrapy入門教程 三 網路爬蟲之scrapy框架詳解 四 scrapy編寫步驟 詳情見二 scrapy入門教程 1 mkdir乙個爬蟲資料夾 例 mkdir home zy pachong pa test 10 28 2 在 home zy pachong pa test ...

Python爬蟲 scrapy框架

開源的,對平台的爬蟲框架 舊版本 需要預先定義所需欄位 class myitem scrapy.item url scrapy.field 再將所需欄位填充 class myspier scrapy.spider defparse self,response return sudo apt inst...

python爬蟲scrapy框架

安裝 pip install scrapy startproject 建立乙個新專案 genspider 根據模板生成乙個新爬蟲 crawl 執行爬蟲 shell 啟動互動式抓取控制台 進入專案目錄 scrapy startproject crawlertest project name cd cr...