真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

這篇文章將為大家詳細講解有關(guān)如何使用Scrapy網(wǎng)絡(luò)爬蟲框架,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管運營、企業(yè)網(wǎng)站設(shè)計、偃師網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

scrapy 介紹

標準介紹

  • Scrapy是一個為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,非常出名,非常強悍。所謂的框架就是一個已經(jīng)被集成了各種功能(高性能異步下載,隊列,分布式,解析,持久化等)的具有很強通用性的項目模板。對于框架的學習,重點是要學習其框架的特性、各個功能的用法即可。

說人話就是

  • 只要是搞爬蟲的,用這個就van事了,因為里面集成了一些很棒的工具,并且爬取性能很高,預(yù)留有很多鉤子方便擴展,實在是居家爬蟲的不二之選。

windows下安裝scrapy

命令

pip install scrapy

默認情況下,直接pip install  scrapy可能會失敗,如果沒有換源,加上臨時源安裝試試,這里使用的是清華源,常見安裝問題可以參考這個文章:Windows下安裝Scrapy方法及常見安裝問題總結(jié)——Scrapy安裝教程。

命令

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple

scrapy創(chuàng)建爬蟲項目

命令

scrapy startproject <項目名稱>

示例:創(chuàng)建一個糗事百科的爬蟲項目(記得cd到一個干凈的目錄哈)

scrapy startproject qiushibaike

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

注:此時,我們已經(jīng)創(chuàng)建好了一個爬蟲項目,但是爬蟲項目是一個文件夾

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

進入爬蟲項目

如果想要進入這個項目,就要cd進這個目錄,如上上圖所示,先cd <項目>,再創(chuàng)建蜘蛛

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

項目目錄結(jié)構(gòu)解析

此時,我們就已經(jīng)進入了項目,結(jié)構(gòu)如下,有一個和項目名同名的文件夾和一個scrapy.cfg文件

scrapy.cfg # scrapy配置,特殊情況使用此配置 qiushibaike # 項目名同名的文件夾     items.py # 數(shù)據(jù)存儲模板,定制要保存的字段     middlewares.py # 爬蟲中間件     pipelines.py # 編寫數(shù)據(jù)持久化代碼     settings.py # 配置文件,例如:控制爬取速度,多大并發(fā)量,等     __init__.py     spiders # 爬蟲目錄,一個個爬蟲文件,編寫數(shù)據(jù)解析代碼         __init__.py

呃,可能此時你并不能懂這么些目錄什么意思,不過不要慌,使用一下可能就懂了,別慌。

創(chuàng)建蜘蛛

通過上述的操作,假設(shè)你已經(jīng)成功的安裝好了scrapy,并且進入了創(chuàng)建的項目

那么,我們就創(chuàng)建一個蜘蛛,對糗事百科的段子進行爬取。

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

創(chuàng)建蜘蛛命令

scrapy genspider <蜘蛛名稱> <網(wǎng)頁的起始url>

示例:創(chuàng)建糗事百科的段子蜘蛛

scrapy genspider duanzi ww.com

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

注:網(wǎng)頁的起始url可以隨便寫,可以隨便改,但是必須有

此時在spider文件夾下,會多一個duanzi.py文件

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

代碼解釋如下

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

爬取數(shù)據(jù)前準備

創(chuàng)建好蜘蛛之后,需要在配置一些東西的,不能直接就爬的,默認是爬取不了的,需要簡單配置一下

打開settings.py文件,找到ROBOTSTXT_OBEY和USER_AGENT變量

ROBOTSTXT_OBEY配置

等于False不遵守robot協(xié)議,默認只有搜索引擎網(wǎng)站才會允許爬取,例如百度,必應(yīng)等,個人爬取需要忽略這個,否則爬取不了

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

USER_AGENT配置

User-Agent是一個最基本的請求必須帶的參數(shù),如果這個帶的不是正常的,必定爬取不了。

User-Agent

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

小試牛刀之獲取糗事百科段子段子鏈接

準備工作做好了,那就開始吧!!!

此處我們需要有xpath的語法基礎(chǔ),其實挺簡單的,沒有基礎(chǔ)的記得百度一下,其實不百度也沒關(guān)系,跟著學,大概能看懂

實現(xiàn)功能

通過xpath獲取每個段子下的a標簽連接

注:審查元素和按住crtl+f搜索內(nèi)容和寫xpath這里不再啰嗦

分析頁面規(guī)則

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

通過審查工具,我們可以看到,class包含article的標簽就是一個個的文章,可能你想到xpath可能可以這樣寫

xpath代碼

//div[@class='article']

但是你會發(fā)現(xiàn)一個都查不出來,因為是包含的關(guān)系,所以需要用contains關(guān)鍵字

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

我們需要這樣寫

xpath代碼

//div[contains(@class,"article")]

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

但是會發(fā)現(xiàn),這定位的太多了,并不是每個段子的div,所以我們要多包含幾個,這樣,就是每個段子的div了

//div[contains(@class,"article") and contains(@class,"block")]

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

上述已經(jīng)成功定位了一個個的段子,下面在此基礎(chǔ)上,定位到每個段子下的a標簽

根據(jù)審查元素,發(fā)現(xiàn)每個段子下class="contentHerf"的a標簽,就是每個段子的詳情頁

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

詳情頁,要定位的a標簽的href確實是詳情頁的url

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

xpath代碼

//div[contains(@class,"article") and contains(@class,"block")]//a[@class="contentHerf"]

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

這樣,我們就定位了一個個a標簽,只至少在控制臺操作是沒問題的,那么,我們使用Python代碼操作一下吧

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

代碼

def parse(self, response):     a_href_list = response.xpath('//div[contains(@class,"article") and contains(@class,"block")]//a[@class="contentHerf"]/@href'     ).extract()     print(a_href_list)

啟動蜘蛛命令

scrapy crawl <爬蟲名> [--nolog]

注:--nolog參數(shù)不加表示一系列日志,一般用于調(diào)試,加此參數(shù)表示只輸入print內(nèi)容

示例:啟動段子命令

scrapy crawl duanzi --nolog

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

成功拿到每一個鏈接。

獲取詳情頁內(nèi)容

在上述,我們成功的獲取到了每個段子的鏈接,但是會發(fā)現(xiàn)有的段子是不全的,需要進入進入詳情頁才能看到所以段子內(nèi)容,那我們就使用爬蟲來操作一下吧。

我們定義一下標題和內(nèi)容。

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架 

根據(jù)元素審查,標題的定位xpath是:

//h2[@class="article-title"]

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

內(nèi)容的xpath是:

//div[@class="content"]

 如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

確定標題和內(nèi)容的xpath定位之后,我們在python代碼中實現(xiàn)一下。

:但是先解決一個問題,詳情頁屬于第二次調(diào)用了,所以我們也需要進行調(diào)用第二次,再編寫代碼

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

代碼

# 詳情頁 def detail(self, response):     title = response.xpath('//h2[@class="article-title"]/text()').extract()     content = response.xpath('//div[@class="content"]//text()').extract()     print("標題:" )     print(title)     print("內(nèi)容")     print(content)  def parse(self, response):     a_href_list = response.xpath(         '//div[contains(@class,"article") and contains(@class,"block")]//a[@class="contentHerf"]/@href'     ).extract()     print(a_href_list)     base_url = "https://www.qiushibaike.com"     for a_href in a_href_list:         url = f"{base_url}{a_href}"         yield scrapy.Request(url=url, callback=self.detail)

結(jié)果

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

但是會發(fā)現(xiàn)啊,似乎每個都是列表形式,這似乎不太行吶,我們稍微修改一下代碼,這樣我們拿到的就是正常的文本了,如下圖所示:

如何使用Scrapy網(wǎng)絡(luò)爬蟲框架

上述命令總結(jié)

創(chuàng)建爬蟲項目

scrapy startproject <項目名稱>

創(chuàng)建蜘蛛

scrapy genspider <蜘蛛名稱> <網(wǎng)頁的起始url>

啟動爬蟲,--nolog參數(shù)不加表示一系列日志,一般用于調(diào)試,加此參數(shù)表示只輸入print內(nèi)容

scrapy crawl <爬蟲名> [--nolog]

關(guān)于“如何使用Scrapy網(wǎng)絡(luò)爬蟲框架”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


文章名稱:如何使用Scrapy網(wǎng)絡(luò)爬蟲框架
標題網(wǎng)址:http://weahome.cn/article/jdcjej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部