九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Python爬蟲(chóng)從入門(mén)到精通(五)動(dòng)態(tài)網(wǎng)頁(yè)的挑戰(zhàn)

前言

很多網(wǎng)站的數(shù)據(jù),比如電商網(wǎng)站商品的價(jià)格,評(píng)論等等會(huì)采用動(dòng)態(tài)加載的方式來(lái)加載,這樣可能在爬蟲(chóng)程序剛剛訪問(wèn)時(shí)無(wú)法直接獲取到相關(guān)數(shù)據(jù)。那么怎么應(yīng)對(duì)這樣的問(wèn)題呢?

一、動(dòng)態(tài)網(wǎng)頁(yè)的使用場(chǎng)景

先看下面一個(gè)例子:

  

        這是京東上看一本書(shū)的場(chǎng)景。我們發(fā)現(xiàn)打開(kāi)一本書(shū)之后,書(shū)的價(jià)格,排名等信息及書(shū)的評(píng)論信息不是在我們第一次打開(kāi)網(wǎng)站時(shí)就立即加載進(jìn)來(lái)的。而是通過(guò)二次請(qǐng)求或多次的異步請(qǐng)求獲取的。這樣的頁(yè)面就是動(dòng)態(tài)頁(yè)面。

關(guān)于動(dòng)態(tài)頁(yè)面使用的場(chǎng)景:

         希望異步刷新的場(chǎng)景。有些網(wǎng)頁(yè)內(nèi)容很多,一次加載完對(duì)服務(wù)器壓力很大,而且有的用戶不會(huì)去查看所有內(nèi)容;

二、回到與HTTP服務(wù)器發(fā)送請(qǐng)求數(shù)據(jù)的原始方法

1、GET方法

GET把參數(shù)數(shù)據(jù)隊(duì)列添加到URL中,Key和Value的各個(gè)字段一一對(duì)應(yīng);在URL中可以看到。

瀏覽器的URL中有些符號(hào),字符不能被很好的識(shí)別。那么我們需要有一套編碼的方式來(lái)傳遞信息。所以發(fā)送端需要做urlencode; 接收端需要做urldecode;

https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=baidu&wd=python%20%E7%88%AC%E8%99%AB&oq=python%2520%25E7%2588%25AC%25E8%2599%25AB&rsv_pq=ef9e51560000eca9&rsv_t=db33UmQaiVre2ourDQMjsxtS03DJVCOUAc2AHonGCIhHT2or8zim%2F96kVGA&rqlang=cn&rsv_enter=0&prefixsug=python%2520%25E7%2588%25AC%25E8%2599%25AB&rsp=0&rsv_sug=2

在線測(cè)試工具: http://tool.chinaz.com/tools/urlencode.aspx

1.https://www.baidu.com/s?wd=DNS

?xxx=yyy&time=zzz get 請(qǐng)求的標(biāo)識(shí)

2.http://acb.com/login?name=zhangsan&password=123

login: name=zhangsan  password=123

2、 POST方法

通過(guò)一個(gè)例子來(lái)看POST方法的使用:

 這是有道翻譯的頁(yè)面,仔細(xì)觀察會(huì)發(fā)現(xiàn),當(dāng)用戶每次輸入一個(gè)想要翻譯的詞語(yǔ)時(shí),頁(yè)面的URL信息并不發(fā)生任何改變。這是一個(gè)典型的異步使用Ajax的技術(shù),用JSON格式進(jìn)行數(shù)據(jù)的傳遞。

三、更加難以對(duì)付的動(dòng)態(tài)網(wǎng)站

1、應(yīng)對(duì)需要多次數(shù)據(jù)的交互模擬的網(wǎng)站

我們有時(shí)會(huì)遇到像淘寶這樣的大型網(wǎng)站,對(duì)數(shù)據(jù)版權(quán)看得特別重的,它們的網(wǎng)站有大量的工程師和技術(shù)人員去維護(hù),它們也可能在技術(shù)手段上采用多次交互數(shù)據(jù)包的方式來(lái)完成網(wǎng)站服務(wù)器與用戶瀏覽器之間的交互。如果此時(shí)還采用傳統(tǒng)的分析數(shù)據(jù)包的方式會(huì)比較的復(fù)雜,難度較高。那么,有沒(méi)有一勞永逸的方法,來(lái)解決此類問(wèn)題呢?

我們的解決方案是:Selenium + PhantomJS。

     我們的爬蟲(chóng)其實(shí)就是在做模擬瀏覽器的行為。

2、 Selenium

一個(gè)Web自動(dòng)化測(cè)試工具,最初是為了網(wǎng)站自動(dòng)化測(cè)試而開(kāi)發(fā)的;我們玩游戲有按鍵精靈;Selenium也可以做類似的事情,但是它是在瀏覽器中做這樣的事情。

安裝: sudo pip install selenium(pip install selenium)

在Python中 from selenium import webdriver 來(lái)測(cè)試是否裝好

說(shuō)明:想要用Python做自動(dòng)化測(cè)試的童鞋們可以好好研究一下Selenium的使用。

3、 PhantomJS及瀏覽器

說(shuō)明:我們上課用的時(shí)有界面的Firefox瀏覽器,以便于教學(xué);

一個(gè)基于webkit無(wú)界面(headless)的瀏覽器,它可以把網(wǎng)站加載到內(nèi)存中并執(zhí)行頁(yè)面上的JS,但它沒(méi)有圖形用戶界面,所以耗費(fèi)的資源比較少;

安裝:     sudo apt install phantomjs (此方法可能安裝不完整,導(dǎo)致部分功能無(wú)法使用)

Linux Ubuntu下完全安裝的方法(參看http://blog.csdn.net/m0_38124502/article/details/79276499

)

Wget

https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2

 cd 下載

 tar -xvf phantomjs-2.1.1-linux-x86_64.tar.bz2

 cd phantomjs-2.1.1-linux-x86_64/

 cd bin/

 sudo cp phantomjs /usr/bin

python -啟動(dòng)-> 瀏覽器進(jìn)程phantomjs,

測(cè)試:

SpiderCodes\Phantomjs\..  對(duì)其中的例子helloworld.js, pageload.js

進(jìn)行測(cè)試;

注意:   ****有可能造成資源泄漏;為了避免這種事的發(fā)生,需要有個(gè)策略適當(dāng)?shù)臅r(shí)候去kill phantomjs進(jìn)程。

四、關(guān)于動(dòng)態(tài)網(wǎng)站信息抓取的總結(jié)

總的來(lái)說(shuō),我們的爬蟲(chóng)要盡量模擬的看起來(lái)就像是真正的用戶在瀏覽器上訪問(wèn)服務(wù)器網(wǎng)站的行為。如果我們使用GET或POST的方式來(lái)模擬瀏覽器與服務(wù)器間通信的行為,成本比較低,但是應(yīng)對(duì)復(fù)雜的網(wǎng)站或者服務(wù)器精心防御的網(wǎng)站來(lái)說(shuō)是很難騙過(guò)服務(wù)器的。Selenim+PhantomJS的方案則會(huì)讓我們的程序看起來(lái)更像是普通的用戶,但是它的效率相對(duì)而言會(huì)降低很多,速度也會(huì)慢很多。在大規(guī)模爬去數(shù)據(jù)時(shí)可能遇到許多新的挑戰(zhàn)。(比如網(wǎng)站尺寸的設(shè)置,等待時(shí)間的設(shè)定等)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python爬蟲(chóng)入門(mén),快速抓取大規(guī)模數(shù)據(jù)(第四部分)
使用selenium自動(dòng)化操作瀏覽器
[Python爬蟲(chóng)]使用Python爬取動(dòng)態(tài)網(wǎng)頁(yè)-騰訊動(dòng)漫(Selenium)
使用python/casperjs編寫(xiě)終極爬蟲(chóng)-Google Keyword Tool Scraper(selenium+python version)
Python實(shí)現(xiàn)數(shù)據(jù)技術(shù)|爬蟲(chóng)便可獲取免費(fèi)百度文庫(kù)付費(fèi)文檔
漫畫(huà)喵的100行Python代碼逆襲
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服