本篇主要介紹對于一個爬蟲框架的思考和,核心部件的介紹,以及常規的思考方法:
一,猜想
我們說的爬蟲,一般至少要包含幾個基本要素:
1.請求發送對象(sender,對于request的封裝,防止被封)
2.解析文檔對象(將請求的網頁當作是html文檔還是字符串)
3.承載所需要的解析對象(標準格式的數據承載者)
4.獲取所需對象后的操作者 (得到對象后,是以文件形式保存還是存入數據庫)
5.整個流程的錯誤處理者(整個流程的異常監控者)

二,驗證
我們來看看Scrapy 提供了哪些核心的對象
refer from :https://scrapy-chs.readthedocs.org/zh_CN/0.24/
基本上我們所設想的對象Scrapy都會包含在里面了
三,爬取
我們知道,一般爬蟲都是按如下規則來爬取數據的
輸入目標網址=> 編寫處理規則(正則表達式或者xpath語法)=>對得到的數據進行處理
Scrapy的做法如下:
1)新建一個項目
以命令行形式切換到需要將代碼放置的文件夾下,然后輸入如下命令:
scrapy startproject VEVb
文件夾下會生成一個VEVb的文件下,切換到該文件夾下(記住切換)

Item.py就是我們所需要數據承載器
修改為如下代碼:
# -*- coding: utf-8 -*-# Define here the models for your scraped items## See documentation in:# http://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyfrom scrapy.item import Field,Itemclass CnblogsItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() Title = Field() TitleUrl = Field()
在Spider文件夾下添加BasicGroupSpider.py 修改為如下內容
from scrapy.spider import BaseSpiderfrom scrapy.selector import HtmlXPathSelectorfrom VEVb.items import CnblogsItemclass CnblogsSpider(BaseSpider): name = "VEVb" #spider的名字 allowed_domains = ["VEVb.com"] start_urls = [ 'http://m.survivalescaperooms.com/' ] #待抓取的列表 def parse(self, response): self.log("Fetch douban homepage page: %s" % response.url) hxs = HtmlXPathSelector(response) #authors = hxs.select('//a[@class="titlelnk"]') items = hxs.select('//a[contains(@class, "titlelnk")]') listitems = [] for author in items: #print author.select('text()').extract() item = CnblogsItem() #property item['Title'] = author.select('text()').extract() item['TitleUrl'] =author.select('@href').extract() listitems.append(item) return listitems
OK ,回到第一步的命令臺的界面,輸入如下命令
scrapy crawl VEVb --logfile=test.log -o VEVb.json -t json
四,結果

關于里面的代碼功能,自己去理解吧,寫過代碼的人大致都了解。
====>DEMO下載<====
總結:
本次主要分析了爬蟲框架的大致構件,并驗證了我們的猜想,關于python的爬蟲框架有很多,不過像scrapy這樣值得入手和研究的,比較少了,.net下的更少了。
新聞熱點
疑難解答