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

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

Python網(wǎng)絡爬蟲舉例分析

這篇文章主要講解了“Python網(wǎng)絡爬蟲舉例分析”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python網(wǎng)絡爬蟲舉例分析”吧!

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供薛城網(wǎng)站建設、薛城做網(wǎng)站、薛城網(wǎng)站設計、薛城網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、薛城企業(yè)網(wǎng)站模板建站服務,10多年薛城做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

先來看一段簡單的代碼。

import requests #導入requests包
url = 'https://www.cnblogs.com/LexMoon/'
strhtml = requests.get(url) #get方式獲取網(wǎng)頁數(shù)據(jù)
print(strhtml.text)

首先是import requests來導入網(wǎng)絡請求相關(guān)的包,然后定義一個字符串url也就是目標網(wǎng)頁,之后我們就要用導入的requests包來請求這個網(wǎng)頁的內(nèi)容。

這里用了requests.get(url),這個get并不是拿取的那個get,而是一種關(guān)于網(wǎng)絡請求的方法。

網(wǎng)絡請求的方法有很多,最常見的有g(shù)et,post,其它如put,delete你幾乎不會見到。

requests.get(url)就是向url這個網(wǎng)頁發(fā)送get請求(request),然后會返回一個結(jié)果,也就是這次請求的響應信息。

響應信息中分為響應頭和響應內(nèi)容。

響應頭就是你這次訪問是不是成功了,返回給你的是什么類型的數(shù)據(jù),還有很多一些。

響應內(nèi)容中就是你獲得的網(wǎng)頁源碼了。

好了,這樣你就算是入門Python爬蟲了,但是還是有很多問題。

1. get和post請求有什么區(qū)別?

2. 為什么有些網(wǎng)頁我爬取到了,里面卻沒有我想要的數(shù)據(jù)?

3. 為什么有些網(wǎng)站我爬下來的內(nèi)容和我真實看到的網(wǎng)站內(nèi)容不一樣?

get和post請求有什么區(qū)別?

get和post的區(qū)別主要在于參數(shù)的位置,比如說有一個需要登錄用戶的網(wǎng)站,當我們點擊登錄之后,賬號密碼應該放在哪里。

get請求最直觀的體現(xiàn)就是請求的參數(shù)就放在了URL中。

比如說你百度Python這個關(guān)鍵字,就可以發(fā)現(xiàn)它的URL如下:

https://www.baidu.com/s?wd=Python&rsv_spt=1

這里面的dw=Python就是參數(shù)之一了,get請求的參數(shù)用?開始,用&分隔。

如果我們需要輸入密碼的網(wǎng)站用了get請求,我們的個人信息不是很容易暴露嗎,所以就需要post請求了。

在post請求中,參數(shù)會放在請求體內(nèi)。

比如說下面是我登錄W3C網(wǎng)站時的請求,可以看到Request Method是post方式。

Python網(wǎng)絡爬蟲舉例分析

在請求的下面還有我們發(fā)送的登錄信息,里面就是加密過后的賬號密碼,發(fā)送給對方服務器來檢驗的。

Python網(wǎng)絡爬蟲舉例分析

為什么有些網(wǎng)頁我爬取到了,里面卻沒有我想要的數(shù)據(jù)?

我們的爬蟲有時候可能爬下來一個網(wǎng)站,在查看里面數(shù)據(jù)的時候會發(fā)現(xiàn),爬下來的是目標網(wǎng)頁,但是里面我們想要的數(shù)據(jù)卻沒有。

這個問題大多數(shù)發(fā)生在目標數(shù)據(jù)是那些列表型的網(wǎng)頁,比如說前幾天班上一個同學問了我一個問題,他在爬攜程的航班信息時,爬下來的網(wǎng)頁除了獲得不了航班的信息,其他地方都可以拿到。

如下圖:

Python網(wǎng)絡爬蟲舉例分析

這是一個很常見的問題,因為他requests.get的時候,是去get的上面我放的那個URL地址,但是這個網(wǎng)頁雖然是這個地址,但是他里面的數(shù)據(jù)卻不是這個地址。

聽起來很像很難,但是從攜程這個網(wǎng)站的設計人的角度來說,加載的這部分航班列表信息可能很龐大,如果你是直接放在這個網(wǎng)頁里面,我們用戶打開這個網(wǎng)頁可能需要很久,以至于認為網(wǎng)頁掛了然后關(guān)閉,所以設計者在這個URL請求中只放了主體框架,讓用戶很快進入網(wǎng)頁中,而主要的航班數(shù)據(jù)則是之后再加載,這樣用戶就不會因為等待很長時間而退出了。

Python網(wǎng)絡爬蟲舉例分析

說到底怎么做是為了用戶體驗,那么我們應該怎么解決這個問題呢?

如果你學過前端,你應該知道Ajax異步請求,不知道也沒事,畢竟我們這里不是在說前端技術(shù)。

我們只需要知道我們最開始請求的https://flights.ctrip.com/itinerary/oneway/cgq-bjs?date=2019-09-14這個網(wǎng)頁中有一段js腳本,在這個網(wǎng)頁請求到之后會去執(zhí)行,而這段腳本的目的就是去請求我們要爬的航班信息。

這時候我們可以打開瀏覽器的控制臺,推薦使用谷歌或者火狐瀏覽器,按F進入坦克,不,按F12進入瀏覽器控制臺,然后點擊NetWork。

在這里我們就可以看到這個網(wǎng)頁中發(fā)生的所有網(wǎng)絡請求和響應了。

Python網(wǎng)絡爬蟲舉例分析

在這里面我們可以找到請求航班信息的其實是https://flights.ctrip.com/itinerary/api/12808/products這個URL。

Python網(wǎng)絡爬蟲舉例分析

為什么有些網(wǎng)站我爬下來的內(nèi)容和我真實看到的網(wǎng)站內(nèi)容不一樣?

最后一個問題就是為什么有些網(wǎng)站我爬下來的內(nèi)容和我真實看到的網(wǎng)站內(nèi)容不一樣?

這個的主要原因是,你的爬蟲沒有登錄。

就像我們平常瀏覽網(wǎng)頁,有些信息需要登錄才能訪問,爬蟲也是如此。

這就涉及到了一個很重要的概念,我們的平常觀看網(wǎng)頁是基于Http請求的,而Http是一種無狀態(tài)的請求。

什么是無狀態(tài)? 你可以理解為它不認人,也就是說你的請求到了對方服務器那里,對方服務器是不知道你到底是誰。

既然如此,我們登錄之后為什么還可以長時間繼續(xù)訪問這個網(wǎng)頁呢?

這是因為Http雖然是無狀態(tài)的,但是對方服務器卻給我們安排了身份證,也就是cookie。

在我們第一次進入這個網(wǎng)頁時,如果之前沒有訪問過,服務器就會給我們一個cookie,之后我們在這個網(wǎng)頁上的任何請求操作,都要把cookie放進去。這樣服務器就可以根據(jù)cookie來辨識我們是誰了。

Python網(wǎng)絡爬蟲舉例分析

比如知乎里面就可以找到相關(guān)的cookie。

對于這類網(wǎng)站,我們直接從瀏覽器中拿到已有的cookie放進代碼中使用,requests.get(url,cookies="aidnwinfawinf"),也可以讓爬蟲去模擬登錄這個網(wǎng)站來拿到cookie。

感謝各位的閱讀,以上就是“Python網(wǎng)絡爬蟲舉例分析”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Python網(wǎng)絡爬蟲舉例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


文章標題:Python網(wǎng)絡爬蟲舉例分析
分享地址:http://weahome.cn/article/iehcih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部