日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
如何進(jìn)行Scrapy的安裝與基本使用

如何進(jìn)行Scrapy的安裝與基本使用,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

專(zhuān)業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶(hù)和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,做網(wǎng)站、網(wǎng)站建設(shè)負(fù)責(zé)任的成都網(wǎng)站制作公司!

一、簡(jiǎn)單實(shí)例,了解基本。

1、安裝Scrapy框架

這里如果直接pip3 install scrapy可能會(huì)出錯(cuò)。

  1. 所以你可以先安裝lxml:pip3 install lxml(已安裝請(qǐng)忽略)。

  2. 安裝pyOpenSSL:在官網(wǎng)下載wheel文件。

  3. 安裝Twisted:在官網(wǎng)下載wheel文件。

  4. 安裝PyWin32:在官網(wǎng)下載wheel文件。

下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/

配置環(huán)境變量:將scrapy所在目錄添加到系統(tǒng)環(huán)境變量即可。

ctrl+f搜索即可。

最后安裝scrapy,pip3 install scrapy

2、創(chuàng)建一個(gè)scrapy項(xiàng)目

新創(chuàng)建一個(gè)目錄,按住shift-右鍵-在此處打開(kāi)命令窗口

輸入:scrapy startproject tutorial即可創(chuàng)建一個(gè)tutorial文件夾

文件夾目錄如下:

|-tutorial

|-scrapy.cfg

  |-__init__.py

  |-items.py

  |-middlewares.py

  |-pipelines.py

  |-settings.py

  |-spiders

    |-__init__.py

文件的功能:

  1. scrapy.cfg:配置文件

  2. spiders:存放你Spider文件,也就是你爬取的py文件

  3. items.py:相當(dāng)于一個(gè)容器,和字典較像

  4. middlewares.py:定義Downloader Middlewares(下載器中間件)和Spider Middlewares(蜘蛛中間件)的實(shí)現(xiàn)

  5. pipelines.py:定義Item Pipeline的實(shí)現(xiàn),實(shí)現(xiàn)數(shù)據(jù)的清洗,儲(chǔ)存,驗(yàn)證。

  6. settings.py:全局配置

3、創(chuàng)建一個(gè)spider(自己定義的爬蟲(chóng)文件)

例如以爬取貓眼熱映口碑榜為例子來(lái)了解一下:

在spiders文件夾下創(chuàng)建一個(gè)maoyan.py文件,你也可以按住shift-右鍵-在此處打開(kāi)命令窗口,輸入:scrapy genspider 文件名 要爬取的網(wǎng)址。

自己創(chuàng)建的需要自己寫(xiě),使用命令創(chuàng)建的包含最基本的東西。

我們來(lái)看一下使用命令創(chuàng)建的有什么。

如何進(jìn)行Scrapy的安裝與基本使用

介紹一下這些是干嘛的:

name:是項(xiàng)目的名字

allowed_domains:是允許爬取的域名,比如一些網(wǎng)站有相關(guān)鏈接,域名就和本網(wǎng)站不同,這些就會(huì)忽略。

atart_urls:是Spider爬取的網(wǎng)站,定義初始的請(qǐng)求url,可以多個(gè)。

parse方法:是Spider的一個(gè)方法,在請(qǐng)求start_url后,之后的方法,這個(gè)方法是對(duì)網(wǎng)頁(yè)的解析,與提取自己想要的東西。

response參數(shù):是請(qǐng)求網(wǎng)頁(yè)后返回的內(nèi)容,也就是你需要解析的網(wǎng)頁(yè)。

還有其他參數(shù)有興趣可以去查查。

4、定義Item

item是保存爬取數(shù)據(jù)的容器,使用的方法和字典差不多。

我們打開(kāi)items.py,之后我們想要提取的信息有:

index(排名)、title(電影名)、star(主演)、releasetime(上映時(shí)間)、score(評(píng)分)

于是我們將items.py文件修改成這樣。

如何進(jìn)行Scrapy的安裝與基本使用

即可。

5、再次打開(kāi)spider來(lái)提取我們想要的信息

修改成這樣:

如何進(jìn)行Scrapy的安裝與基本使用

好了,一個(gè)簡(jiǎn)單的爬蟲(chóng)就寫(xiě)完了。

6、運(yùn)行

在該文件夾下,按住shift-右鍵-在此處打開(kāi)命令窗口,輸入:scrapy crawl maoyan(項(xiàng)目的名字)

即可看到:

如何進(jìn)行Scrapy的安裝與基本使用

7、保存

我們只運(yùn)行了代碼,看看有沒(méi)有報(bào)錯(cuò),并沒(méi)有保存。

如果我們想保存為csv、xml、json格式,可以直接使用命令:

在該文件夾下,按住shift-右鍵-在此處打開(kāi)命令窗口,輸入:

scrapy crawl maoyan -o maoyan.csv

scrapy crawl maoyan -o maoyan.xml

scrapy crawl maoyan -o maoyan.json

選擇其中一個(gè)即可。當(dāng)然如果想要保存為其他格式也是可以的,這里只說(shuō)常見(jiàn)的。這里選擇json格式,運(yùn)行后會(huì)發(fā)現(xiàn),在文件夾下多出來(lái)一個(gè)maoyan.json的文件。打開(kāi)之后發(fā)現(xiàn),中文都是一串亂碼,這里需要修改編碼方式,當(dāng)然也可以在配置里修改

(在settings.py文件中添加FEED_EXPORT_ENCODING='UTF8'即可),

如果想直接在命令行中修改:

scrapy crawl maoyan -o maoyan.json -s FEED_EXPORT_ENCODING=UTF8

即可。

這里自己試試效果吧。

當(dāng)然我們保存也可以在運(yùn)行的時(shí)候自動(dòng)保存,不需要自己寫(xiě)命令。后面介紹(我們還有還多文件沒(méi)有用到呦)。

二、scrapy如何解析?

之前寫(xiě)過(guò)一篇文章:三大解析庫(kù)的使用

但是scrapy也提供了自己的解析方式(Selector),和上面的也很相似,我們來(lái)看一下:

1、css

首先需要導(dǎo)入模塊:from scrapy import Selector

例如有這樣一段html代碼:

html='Demo

This is Demo
'

1.1、首先需要構(gòu)建一個(gè)Selector對(duì)象

sel = Selector(html)

text = sel.css('.cla::text').extract_first()

.cla表示選中上面的div節(jié)點(diǎn),::text表示獲取文本,這里和以前的有所不同。

extract_first()表示返回第一個(gè)元素,因?yàn)樯鲜?sel.css('.cla::text')返回的是一個(gè)列表,你也可以寫(xiě)成sel.css('.cla::text')[0]來(lái)獲取第一個(gè)元素,但是如果為空,就會(huì)報(bào)出超出最大索引的錯(cuò)誤,不建議這樣寫(xiě),而使用extract_first()就不會(huì)報(bào)錯(cuò),同時(shí)如果寫(xiě)成extract_first('123')這樣,如果為空就返回123

1.2、有了選取第一個(gè),就有選取所有:extract()表示選取所有,如果返回的是多個(gè)值,就可以是這樣寫(xiě)。

1.3、獲取屬性就是sel.css('.cla::attr('class')').extract_first()表示獲取class

1.4、獲取指定屬性的文本:sel.css('div[class="cla"]::text')

1.5、其他寫(xiě)法和css的寫(xiě)法如出一轍。

1.6、在scrapy中為我們提供了一個(gè)簡(jiǎn)便的寫(xiě)法,在上述的簡(jiǎn)單實(shí)例中,我們知道了response為請(qǐng)求網(wǎng)頁(yè)的返回值。

我們可以直接寫(xiě)成:response.css()來(lái)解析,提取我們想要的信息。同樣,下面要說(shuō)的XPath也可以直接寫(xiě)成:

response.xpath()來(lái)解析。

2、Xpath

Xpath的使用可以看上面的文章:三大解析庫(kù)的使用

注意:獲取的還是列表,所以還是要加上extract_first()或者extract()

3、正則匹配(這里用response操作)

例如:response.css('a::text').re('寫(xiě)正則')

這里如果response.css('a::text')匹配的是多個(gè)對(duì)象,那么加上正則也是匹配符合要求的多個(gè)對(duì)象。

這里如果想要匹配第一個(gè)對(duì)象,可以把re()修改成re_first()即可。

注意:response不可以直接調(diào)用re(),response.xpath('.').re()可以相當(dāng)于達(dá)到直接使用正則的效果

正則的使用:萬(wàn)能的正則表達(dá)式

三、Dowmloader Middleware的使用

本身scrapy就提供了很多Dowmloader Middleware,但是有時(shí)候我們要修改,

比如修改User-Agent,使用代理ip等。

以修改User-Agent為例(設(shè)置代理ip大同小異):

第一種方法,可以在settings.py中直接添加USER-AGENT='xxx'

但是我們想要添加多個(gè)User-Agent,每次隨機(jī)獲取一個(gè)可以利用Dowmloader Middleware來(lái)設(shè)置。

第一步將settings中的USER-AGENT='xxx'修改成USER-AGENT=["xxx","xxxxx","xxxxxxx"]

第二步在middlewares.py中添加:

如何進(jìn)行Scrapy的安裝與基本使用

from_crawler():通過(guò)參數(shù)crawler可以拿到配置的信息,我們的User-Agent在配置文件里,所以我們需要獲取到。

方法名不可以修改。

第三步在settings.py中添加:

如何進(jìn)行Scrapy的安裝與基本使用

將scrapy自帶的UserAgentmiddleware的鍵值設(shè)置為None,

自定義的設(shè)置為400,這個(gè)鍵值越小表示優(yōu)先調(diào)用的意思。

四、Item Pipeline的使用。

1、進(jìn)行數(shù)據(jù)的清洗

在一的實(shí)例中我們把評(píng)分小于等于8.5分的score修改為(不好看?。?,我們認(rèn)為是不好看的電影,我們將pipeline.py修改成這樣:

如何進(jìn)行Scrapy的安裝與基本使用

在setting.py中添加:

如何進(jìn)行Scrapy的安裝與基本使用

我們執(zhí)行一下:

如何進(jìn)行Scrapy的安裝與基本使用

2、儲(chǔ)存

2.1儲(chǔ)存為json格式

我們將pipeline.py修改成這樣:

如何進(jìn)行Scrapy的安裝與基本使用

在setting.py中添加:

如何進(jìn)行Scrapy的安裝與基本使用

表示先執(zhí)行TextPipeline方法,再執(zhí)行JsonPipeline方法,先清洗,再儲(chǔ)存。

2.2儲(chǔ)存在MySQL數(shù)據(jù)庫(kù)

首先在mysql數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)maoyanreying,創(chuàng)建一個(gè)表maoyan。

我們將pipeline.py修改成這樣:

如何進(jìn)行Scrapy的安裝與基本使用

在setting.py中添加:

如何進(jìn)行Scrapy的安裝與基本使用

即可

完。

關(guān)于如何進(jìn)行Scrapy的安裝與基本使用問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


當(dāng)前題目:如何進(jìn)行Scrapy的安裝與基本使用
標(biāo)題鏈接:http://www.dlmjj.cn/article/ghhegh.html