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

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 全網爬蟲
  • 爬蟲零基礎
  • 爬蟲基礎
  • 爬蟲
  • 2019北京智源大會,智源 - 看山杯 專家發現算法大賽 2019 知乎
  • 電腦id和ip是一個嗎,【運維心得】網絡ID與網絡IP的區別你知道嗎?
  • Deep Learning for Matching in Search and Recommendation 搜索與推薦中的深度學習匹配(1 引言)
  • woocommerce好用嗎,woocommerce 分類到菜單_我如何為每個WooCommerce產品類別創建不同的菜單?
  • wordpress底部菜單插件,sysbios掛鉤函數使用_使用動作掛鉤自定義WordPress主題
  • 醫學影像成像原理,醫學成像模式~~~
  • 學生請假系統app,基于微信小程序的學生請假系統開發
  • 上課睡覺,學生上課睡覺班主任怎么處理_學生上課睡覺,你能正確處理嗎?
  • 對計算機老師的課堂教學評價,計算機課學生評價用語,關于學生上課的評語及評課用語
  • 為什很多學生上課睡覺,學生上課睡覺班主任怎么處理_學生上課睡覺怎么辦
  • win10小盾牌怎么去掉,windows10軟件圖標去除小盾牌
  • matlab常用命令,matlab基礎之變量,matlab基礎知識(4):特殊變量
  • 應用程序右下角有個盾牌,Win7文件右下角盾牌標志去除方法---UAC阻止程序運行
  • 對ui設計的理解和認識,我對于UI設計這個領域的理解
  • 視頻直播間有哪些,直播平臺必備-百度音視頻直播 LSS
  • obs可以推流到哪些直播平臺,新版RTMP推流協議視頻直播點播平臺EasyDSS在進行視頻直播/錄像回看時如何創建視頻錄像計劃?
  • 歐美國家需要輸入法嗎,Mac刪除默認美國輸入法
  • iphone12忘記鎖屏密碼怎么解鎖,APPLE
  • 簡體字比繁體字的好處,雜談對抽象事物的審美——繁體字與簡體字,孰美?
  • 互聯網醫美是什么,醫美互聯網公司:新氧
  • 英語陳述句疑問句祈使句感嘆句,Wh問句,疑問句,祈使句,感嘆句,10
  • 反卷積原理,超越 ConvNeXt、RepLKNet | 看 51×51 卷積核如何破萬卷!
  • 三星最新概念機,三星提出XFormer | 超越MobileViT、DeiT、MobileNet等模型
  • 統計學屬于哪個大類,第四章 專業統計(上)-統計實務
  • json模塊,模塊講解——time,datetime,json,os,requests
  • 微信復制別人的話中間有虛線,微信小程序——繪制折線圖
  • 流固耦合作用,2018結構、流體、熱分析、多物理場耦合、電磁仿真計算特點與硬件配置方案分析
  • 流固耦合作用,結構、流體、熱分析、多物理場耦合、電磁仿真硬件配置推薦2018
  • 倉庫主管崗位職責,LeetCode:Database 115.倉庫經理
  • ios如何卸載軟件,ios13測試版怎么卸載軟件,蘋果手機升ios13.2后怎么刪除app ios13.2卸載軟件應用方法...