怎麼用python扒網頁?

farsun發表於2021-09-11

怎麼用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('')
html=response.read()
print html

其實可以將上面對的請求響應分為兩步,一步是請求,一步是響應,形式如下:

import urllib2
# 請求
request=urllib2.Request('')
# 響應
response = urllib2.urlopen(request)
html=response.read()
print html

還有post請求實現:

import urllib
import urllib2
url = ''
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 = ''
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
referer=''
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('')
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( "/" )
response = opener.open(req)
print response.headers
retdata = response.read()

更多Python知識請關注

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4289/viewspace-2833342/,如需轉載,請註明出處,否則將追究法律責任。

相關文章