Python scrapy爬蟲框架簡介
安裝準備
需要安裝Python2.7/3.5 需要安裝scrapy庫:pip install scrapy
Windows下還需要安裝win32py擴充套件包:安裝參考另一篇文章http://blog.csdn.net/u010129985/article/details/69257887
scrapy
scrapy的每個item物件都表示一個網頁,裡面可以定義各種屬性,比如:標題,時間,內容等 自定義的item一般都會繼承Item
items.py
class Article(Item):
title=Field()
詳細文章參考:
整體專案結構介紹:(包含專案,但是虎嗅網好像限制爬蟲,所以執行不了)
https://www.xncoding.com/2016/03/10/scrapy-02.html
參考二:http://www.pythontip.com/blog/post/1985/
已測試可用示例:
維基百科採集
1 生成專案
scrapy startproject wikiSpider wikiSpider是專案名稱
2 編輯items.py檔案
import scrapy
from scrapy import Item,Field
class Article(Item):
title=Field()
在spiders資料夾下建一個處理檔案articleSpider.py
from scrapy.contrib.spiders import CrawlSpider, Rule
from wikiSpider.items import Article
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy import log
class ArticleSpider(CrawlSpider):
#log.start(logfile='log.txt', loglevel=log.CRITICAL)
name="article"
allowed_domains = ["en.wikipedia.org"]
start_urls = ["http://en.wikipedia.org/wiki/Python_%28programming_language%29"]
rules = [
Rule(SgmlLinkExtractor(allow=('(/wiki/)((?!:).)*$'),), callback="parse_item", follow=True)
]
def parse_item(self, response):
item = Article()
title = response.xpath('//h1/text()')[0].extract()
print("Title is: "+title)
item['title'] = title
return item
介紹:name很關鍵 scrapy crawl article 執行爬蟲專案時指定的引數就是這個name,allowed_domains表示能夠被採集的站點 ;在piplines.py檔案裡可定義一定不會採集的站點;start_urls說明該爬蟲從哪個URL開始爬;parse()是預設的採集回撥,當採集到一個網頁後自動呼叫該方法,該方法只接受一個response參數列示網頁體;CrawlSpider是框架提供的一個爬蟲基礎類(Spider>BaseSpider>CrawlSpider) ; Rule為規則物件,主要用來篩選網頁元素;SgmlLinkExtractor實現規則allow表示允許通過的連結,deny=(‘deny.php’, )表示不被允許的連結 ;callback指定回撥函式,上面放棄了預設的回撥parse() ;response是下載的網頁流(字串) 本咧中用的Xpath選擇器,同時還可以用beautifulsoup來解析,lxml來解析(Scrapy選擇器構建在lxml基礎之上,所以可以保證速度和準確性。)
Xpath語法
//div/li 選擇所有div下的li標籤
a/@href 選擇所有a標籤的屬性href
a/text() 選擇a標籤的文字
a[@href="/abc"] 選擇a標籤且href屬性為“/abc”
text()表示選擇文字
//div[@class="mod-info-flow"]/div/div[@vlass="mob-ctt"] 表示選擇所有div標籤且div的class為mod-info-flow再選擇該div下的div再下面的div且該div class為mod-ctt
Xpath選擇器返回的是一個序列
item['link']=sel.xpath('h2/a/@href')[0].extract() 表示選擇序列第一個物件,extract()表示提取出結果
callback指定的回撥都會返回一個結果序列,這個序列可以用來輸出到檔案;如果是全網站爬蟲,需要對xpath解析後的連結再次執行需要返回一個Request序列 進行下一步處理,如:
yield scrapy.Request(url,callback=self.parse_article) 把xpath提取出來的URL交付給下一個回撥處理,yield表示提供一個生成器,這個生成器可以用來迭代
輸出日誌
scrapy crawl article -s LOG_FILE=wiki.log
輸出採集結果到檔案
scrapy crawl article -o articles.json/csv/xml -t json/csv/xml
相關文章
- Python爬蟲教程-30-Scrapy 爬蟲框架介紹Python爬蟲框架
- python爬蟲Scrapy框架Python爬蟲框架
- Python爬蟲—Scrapy框架Python爬蟲框架
- Python爬蟲之scrapy框架簡介及環境安裝Python爬蟲框架
- Python爬蟲 --- 2.3 Scrapy 框架的簡單使用Python爬蟲框架
- Scrapy爬蟲框架爬蟲框架
- 爬蟲--Scrapy簡易爬蟲爬蟲
- 爬蟲(9) - Scrapy框架(1) | Scrapy 非同步網路爬蟲框架爬蟲框架非同步
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架Python爬蟲框架
- Python網路爬蟲(六) Scrapy框架Python爬蟲框架
- Python 爬蟲 (六) -- Scrapy 框架學習Python爬蟲框架
- 爬蟲代理 Scrapy 框架詳細介紹 2爬蟲框架
- Python爬蟲教程-32-Scrapy 爬蟲框架專案 Settings.py 介紹Python爬蟲框架
- Python爬蟲教程-31-建立 Scrapy 爬蟲框架專案Python爬蟲框架
- 爬蟲框架-scrapy的使用爬蟲框架
- Scrapy爬蟲框架的使用爬蟲框架
- Scrapy 示例 —— Web 爬蟲框架Web爬蟲框架
- python 爬蟲對 scrapy 框架的認識Python爬蟲框架
- Python爬蟲 ---scrapy框架初探及實戰Python爬蟲框架
- Python3爬蟲(十八) Scrapy框架(二)Python爬蟲框架
- Python爬蟲知識點四--scrapy框架Python爬蟲框架
- python爬蟲框架scrapy例項詳解Python爬蟲框架
- Scrapy框架的使用之Scrapy通用爬蟲框架爬蟲
- 介紹一款能取代 Scrapy 的 Python 爬蟲框架 - feapderPython爬蟲框架
- Python爬蟲框架:scrapy爬取高考派大學資料Python爬蟲框架
- 【Python篇】scrapy爬蟲Python爬蟲
- Scrapy框架簡介框架
- Python Scrapy 爬蟲(二):scrapy 初試Python爬蟲
- Python爬蟲-用Scrapy框架實現漫畫的爬取Python爬蟲框架
- 第三篇:爬蟲框架 - Scrapy爬蟲框架
- 爬蟲 Scrapy框架 爬取圖蟲圖片並下載爬蟲框架
- Python爬蟲實戰-使用Scrapy框架爬取土巴兔(一)Python爬蟲框架
- scrapy爬蟲爬蟲
- Python爬蟲深造篇(四)——Scrapy爬蟲框架啟動一個真正的專案Python爬蟲框架
- 學好Python不加班系列之SCRAPY爬蟲框架的使用Python爬蟲框架
- Scrapy爬蟲-草稿爬蟲
- 為什麼使用Scrapy框架來寫爬蟲?框架爬蟲
- 在scrapy框架下建立爬蟲專案,建立爬蟲檔案,執行爬蟲檔案框架爬蟲