国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

(2)分布式下的爬蟲Scrapy應該如何做-關于對Scrapy的反思和核心對象的介紹

2019-11-14 17:01:58
字體:
來源:轉載
供稿:網友

   本篇主要介紹對于一個爬蟲框架的思考和,核心部件的介紹,以及常規的思考方法:

一,猜想

    我們說的爬蟲,一般至少要包含幾個基本要素:

   1.請求發送對象(sender,對于request的封裝,防止被封)

   2.解析文檔對象(將請求的網頁當作是html文檔還是字符串)

   3.承載所需要的解析對象(標準格式的數據承載者)

   4.獲取所需對象后的操作者 (得到對象后,是以文件形式保存還是存入數據庫)

   5.整個流程的錯誤處理者(整個流程的異常監控者)

   

 

二,驗證

 

我們來看看Scrapy 提供了哪些核心的對象

 

 

基本概念

命令行工具(Command line tools)
學習用于管理Scrapy項目的命令行工具
Items
定義爬取的數據
Spiders
編寫爬取網站的規則
選擇器(Selectors)
使用XPath提取網頁的數據
Scrapy終端(Scrapy shell)
在交互環境中測試提取數據的代碼
Item Loaders
使用爬取到的數據填充item
Item Pipeline
后處理(Post-PRocess),存儲爬取的數據
Feed exports
以不同格式輸出爬取數據到不同的存儲端
Link Extractors
方便用于提取后續跟進鏈接的類。

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下的更少了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东丽区| 怀来县| 阿勒泰市| 龙州县| 北川| 闵行区| 长宁县| 虹口区| 正阳县| 霍山县| 珠海市| 隆昌县| 五家渠市| 涿鹿县| 台江县| 绿春县| 固原市| 礼泉县| 涟源市| 广丰县| 勃利县| 靖州| 忻城县| 井陉县| 绩溪县| 邛崃市| 保德县| 潞西市| 恩施市| 腾冲县| 合阳县| 长沙市| 东乌珠穆沁旗| 汝城县| 抚州市| 崇文区| 龙陵县| 尼玛县| 积石山| 曲松县| 隆安县|