python爬蟲基本原理及入門


爬蟲:請求目標網站並獲得數據的程序

爬蟲的基本步驟:

使用python自帶的urllib庫請求百度:

import urllib.request response = urllib.request.urlopen('http://www.baidu.com') print(type(response)) #打印結果
<class 'http.client.HTTPResponse'>

可以從類型上看出來,response是一個HTTP響應

 

 

請求:

請求的方式以GET和POST最為常用,一般的GET方法將請求參數放在URL中。如在百度中搜索一個關鍵詞,這就形成了以GET在URL中更改參數的方法。

而POST將參數放在表單內進行請求。如請求登陸百度,需要向百度服務器發送你的賬號密碼這些東西。

 

請求頭是一個很重要的請求內容,在一般的瀏覽器請求中,網站會返回一個你的瀏覽器信息,如果在代碼不偽裝程瀏覽器的情況下,你的IP地址會迅速的被網站封掉,每個爬蟲庫的偽裝方式都是不同的,如urllib庫

import urllib.request heads = {} heads['User-Agent'] = 'Mozilla/5.0 ' \ '(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \ '(KHTML, like Gecko) Version/5.1 Safari/534.50' req = urllib.request.Request(url=url, data=data, method='POST', headers=heads) response = urllib.request.urlopen(req)
print(response.getheaders()) #getheaders()方法將會返回給你一些請求信息,如時間,服務器信息等,包含user-agent

 

 響應:

響應就是請求之后瀏覽器所呈現的東西,最重要的就是響應體,包含了網頁的源文件

在代碼的情況下查看響應狀態:

import urllib.request response = urllib.requset.urlopen('http://www.baidu.com') print(response.getcode()) #返回200表示成功

 

解析方式:

當想要獲得網頁中某些元素應該怎樣去解析?

解析的方式多種多樣,目前還只是使用正則來做解析,聽說xpath是最簡單解析方式,不過我覺得每個庫還是要使用一下試試的,看看哪個更適合你。

為什么有的網頁請求源碼和在瀏覽器中查看到的不一樣?

這是因為動態網站使用了JS渲染,元素都是經過js動態加載出來的,所以想要獲得源碼還要去模擬瀏覽器的行為,像selenium驅動browser,PhantomJS等工具。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM