小編給大家分享一下用python爬蟲網頁數據的流程步驟,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!
python爬蟲網頁的基本流程:
首先選取一部分精心挑選的種子URL。
將這些URL放入待抓取URL隊列。
從待抓取URL隊列中讀取待抓取隊列的URL,解析DNS,并且得到主機的IP,并將URL對應的網頁下載下來,存儲進已下載網頁庫中。此外,將這些URL放進已抓取URL隊列。
分析已抓取URL隊列中的URL,從已下載的網頁數據中分析出其他URL,并和已抓取的URL進行比較去重,最后將去重過的URL放入待抓取URL隊列,從而進入下一個循環。
1、HTTP請求實現
使用urllib2/urllib實現:
urllib2和urllib是Python中的兩個內置模塊,要實現HTTP功能,實現方式是以urllib2為主,urllib為輔。
urllib2提供一個基礎函數urlopen,通過向指定的URL發出請求來獲取數據。最簡單的形式是:
import urllib2
response=urllib2.urlopen('http://www.zhihu.com')
html=response.read()
print html其實可以將上面對http://www.zhihu.com的請求響應分為兩步,一步是請求,一步是響應,形式如下:
import urllib2
# 請求
request=urllib2.Request('http://www.zhihu.com')
# 響應
response = urllib2.urlopen(request)
html=response.read()
print html還有post請求實現:
import urllib
import urllib2
url = 'http://www.xxxxxx.com/login'
postdata = {'username' : 'qiye',
'password' : 'qiye_pass'}
# info 需要被編碼為urllib2能理解的格式,這里用到的是urllib
data = urllib.urlencode(postdata)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
html = response.read()2、請求頭headers處理
將上面的例子改寫一下,加上請求頭信息,設置一下請求頭中的User-Agent域和Referer域信息。
import urllib
import urllib2
url = 'http://www.xxxxxx.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
referer='http://www.xxxxxx.com/'
postdata = {'username' : 'qiye',
'password' : 'qiye_pass'}
# 將user_agent,referer寫入頭信息
headers={'User-Agent':user_agent,'Referer':referer}
data = urllib.urlencode(postdata)
req = urllib2.Request(url, data,headers)
response = urllib2.urlopen(req)
html = response.read()3、Cookie處理
urllib2對Cookie的處理也是自動的,使用CookieJar函數進行Cookie的管理。如果需要得到某個Cookie項的值,可以這么做:
import urllib2
import cookielib
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open('http://www.zhihu.com')
for item in cookie:
print item.name+':'+item.value但是有時候會遇到這種情況,我們不想讓urllib2自動處理,我們想自己添加Cookie的內容,可以通過設置請求頭中的Cookie域來做:
import urllib2 opener = urllib2.build_opener() opener.addheaders.append( ( 'Cookie', 'email=' + "xxxxxxx@163.com" ) ) req = urllib2.Request( "http://www.zhihu.com/" ) response = opener.open(req) print response.headers retdata = response.read()
看完了這篇文章,相信你對用python爬蟲網頁數據的流程步驟有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。