当前位置: 首页>编程笔记>正文

scrapy爬蟲書,scrapy爬蟲1--基礎設置篇

scrapy爬蟲書,scrapy爬蟲1--基礎設置篇

scrapy作為一個用python編寫的網絡爬蟲,繼承了python簡單易用的特點,目前已經在很多項目中所使用。

這里也是因為工作中的需要,把scrapy使用過程中的一些心得和遇到的問題記錄下來以便加深記憶。

scrapy安裝的過程就不在這里詳述了,大家安裝都會碰到各種不同的問題,主要還是因為python版本,vc++版本以及scrapy版本的兼容性引起的。

這里也附上我的安裝及運行環境:windows7+python2.6+Microsoft Visual Studio 2010+scrapy 0.18

最好不要用最新scrapy版本,在一些包的依賴上會報錯,導致各種各樣稀奇古怪的錯誤。

?

一個簡單的scrapy項目很簡單,會生成4個文件和一個文件夾,scrapy爬蟲就是圍繞這些文件進行工作,把最主要的過程自行封裝好了。(如下圖)

實際的目錄結構如下:

scrapy.cfg
myproject/__init__.pyitems.pypipelines.pysettings.pyspiders/__init__.pyspider1.pyspider2.py...

?

?

scrapy.cfg:爬蟲項目的注冊文件,不可修改。

?

items.py:用于定義蜘蛛爬行的信息分類,比如標題、正文、描述等。

items.py文件很重要,類似mvc模型中的m,用于定義最終接收的數據類型,也就是需要的數據信息。

?

一個典型的items.py文件信息如下:

from scrapy.item import Item, Fieldclass Website(Item):title = Field()description = Field()urls = Field()

?

這里就定義了一個典型的item類Website,用于接收爬蟲爬下來的信息,進行第二步處理。

?

Pipeline.py:scrapy的管道文件,用于對抓取信息進行關鍵詞或規則的抽取及過濾。舉個例子,你現在需要抓取一類熱點概念如“上海自貿區”相關的股票信息,

這部分信息在個股的描述字段里面有記錄,但你抓取的頁面上并沒有單獨將“上海自貿區”的類別獨立出來,而你想要這部分的信息,那么你可以在Pipeline文件中進行定義,讓蜘蛛在抓取信息后再經過一次過濾,這個過程有點類似水經過管道的過程,所以中文翻譯將Pipeline.py定義為管道文件。

?

一個典型的Pipeline.py文件內容如下:

from scrapy.exceptions import DropItemclass FilterWordsPipeline(object):"""A pipeline for filtering out items which contain certain words in theirdescription"""# put all words in lowercasewords_to_filter = ['上海自貿區']def process_item(self, item, spider):for word in self.words_to_filter:if word not in unicode(item['description']).lower():raise DropItem("Contains forbidden word: %s" % word)else:return item

?

settings.py:scrapy項目的全局設置文件。

看名字就知道,這個文件用來設置一些全局的參數,對蜘蛛爬蟲的行為進行控制,可以說是最核心的文件。

一些典型的settings參數設置如下:

SPIDER_MODULES   蜘蛛模塊所在的目錄,默認位于項目名/spidersDOWNLOAD_DELAY  蜘蛛爬取頁面的時間間隔,這個參數很重要,一般設置為0.5-1秒,太頻繁會被對方網站封IPUSER_AGENT  用戶代理信息,用來定義訪問目標網站頭部的user-agent信息BOT_NAME  蜘蛛爬蟲名,默認為"scrapybot",出現在headers頭部信息中CONCURRENT_ITEMS 爬蟲一次可識別的對象信息個數,默認為100CONCURRENT_REQUESTS 爬蟲可同時響應的請求個數,默認為16CONCURRENT_REQUESTS_PER_DOMAIN  針對單個域名爬蟲一次可同時響應的請求個數,默認為8DEFAULT_REQUEST_HEADERS 可定義爬蟲的頭部信息,用于偽裝成用戶進程DOWNLOAD_TIMEOUT  設置蜘蛛爬行的超時時間ITEM_PIPELINES  定義蜘蛛爬蟲的管道信息LOG_ENABLED  是否允許日志記錄LOG_ENCODING  日志編碼

?

spiders:用于定義各種各樣的蜘蛛文件,每個蜘蛛里面定義了其爬行網站獲取信息的規則,也就是說從某個網站上以什么樣的方式獲取何種類型的數據都在這里面進行定義。

?

一個簡單的spiders.py文件內容如下:

from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider
from scrapy.http import Request
from myproject.items import MyItemclass MySpider(BaseSpider):name = 'example.com'allowed_domains = ['example.com']start_urls = ['http://www.example.com/1.html','http://www.example.com/2.html','http://www.example.com/3.html',]def parse(self, response):hxs = HtmlXPathSelector(response)for h3 in hxs.select('//h3').extract():yield MyItem(title=h3)for url in hxs.select('//a/@href').extract():yield Request(url, callback=self.parse)

?

其中name為蜘蛛名詞,allowed_domains為爬行的域名,start_urls為爬行的url列表,parse為解析的過程。

?

對于scrapy來說,一共有幾大類型的蜘蛛,分別如下:

?

BaseSpider: 基礎的爬蟲類,可以說是通用的,可自行在里面重構其解析函數。

?

CrawlSpider:典型的爬蟲蜘蛛類,可對大部分通用的網站進行爬行。

?

XMLFeedSpider:XML專門的爬蟲類

?

CSVFeedSpider:適用于CSV頁面的爬蟲類

?

SitemapSpider:適用于sitemap的爬蟲類

轉載于:https://www.cnblogs.com/oracleblog/p/4288643.html

https://www.nshth.com/bcbj/313057.html
>

相关文章:

  • scrapy爬蟲書
  • 爬蟲基礎知識
  • scrapy爬蟲
  • 爬蟲框架scrapy
  • scrapy 全網爬蟲
  • 爬蟲零基礎
  • 爬蟲基礎
  • 爬蟲
  • pdf翻譯網站,1 Trillion Dollar Refund – How To Spoof PDF Signatures——欺騙PDF簽名
  • 如何創建一個抽象類,創建具體的產品,并繼承產品抽象類
  • 主從庫理論知識-主從同步如何實現?
  • Tomcat環境變量配置,Mybatis的配置文件參數詳解
  • I Am You,POJ 3130 How I Mathematician Wonder What You Are! 半平面交
  • 要學vue需要學什么基礎知識,第一章 Vue基礎入門
  • win7下安裝win10,win10下安裝Ubuntu18.10雙系統
  • vmplayer怎么使用烏邦圖,烏邦圖環境安裝
  • 計算機專業要不要考研——寫的很棒
  • redisson看門狗原理,記錄一次redis漏洞攻擊
  • 任意波形發生器,基于單片機信號波形發生器系統設計-畢設課設
  • 嵌入式驅動,嵌入式Linux驅動大全問世,十年磨一劍,視頻!服務!新老客戶都有大折扣!
  • socket連接器v2下載,Netty(一)基礎socketchannel,Buffer,selector黏包 半包解決 實戰
  • 大一c語言程序設計筆記,吉林大學2013級大一下學期程序設計作業:同學通訊錄系統
  • 暑期小學生計算機培訓班,青島小學生學習編程暑假
  • 熊貓毛小喵喵去哪里了,小西貝、何小喵看熊貓之觀察者設計模式
  • 如何用c語言比較兩個數的大小,如何用C語言求兩個數的較大值
  • 輾轉相除法求最小公倍數的方法,更相減損術--最大公約數
  • 輾轉相除法求最小公倍數的方法,如何求出兩個整數的最大公約數
  • 李新義的書畫藝術,中國現代書畫家——譚奇中、李義象、高俊鵬等
  • 海底撈張勇名言,致張勇先生一封信:海底撈的“七宗罪”!
  • WPF學習(12)動畫
  • ui自動化測試工具,移動端UI自動化之appium的使用(二)
  • 爬蟲網站,Search For Free —— 新聞爬蟲及爬取結果的查詢網站
  • tenda騰達無線設置,騰達F6路由器無線中繼功能設置
  • 斐波那契數列、小青蛙跳臺階
  • OJ每日一練——小青蛙上臺階
  • 小青蛙貝葉斯
  • 小青蛙走臺階問題
  • MySQL數據庫下載,NAVICAT FOR MYSQL存儲過程