1. 程式人生 > >Python爬蟲入門:使用urllib模組獲取請求頁面資訊

Python爬蟲入門:使用urllib模組獲取請求頁面資訊

  歡迎來到拖更王的小部落格,天天想著要把學習和工作中遇到的內容釋出到空間,但是因為忙總是忘(這個藉口真好)。以後還應該會堅持什麼時候想起來什麼時候更新的好習慣吧。
  今天說一下python爬蟲中一個常用的模組urllib,urllib和requests一樣都是用來發起頁面請求進行獲取頁面資訊的模組,但是不同的是requests要比urllib更強大,用起來更方便,requests屬於第三方模組,需要單獨安裝,而urllib屬於內建模組,可以直接匯入使用,下面就使用urllib寫兩個小的案例進行實際演示,建議新手也跟著操作一下。一個是獲取頁面資訊,一個是使用cookie登入人人網登入。

# 匯入urllib模組,想用哪種方式自己選擇
# import urllib.request
from urllib import request

# 目標網址
url = 'http://www.baidu.com'

# 發起請求
response = request.urlopen(url)
# 使用第一種匯入模組的方式如下
# response = urllib.request.urlopen(url)

# 直接列印response的話只能得到一個HTTPResposne型別的物件
# print(response)
# 所以需要使用read()方法解析獲取頁面,最後並轉碼為utf-8
html = response.read().decode('utf-8')

# 列印獲取頁面
print(html)

  部分網站有簡單的反爬措施,比如需要加上headers資訊,如User-Agent、Cookie等,新增上即可。
  此時再多加上一行建立請求物件的程式碼即可。如下:

# 在解析頁面時,部分網站需要新增請求頭資訊來跳過基本的反爬措施,可以使用Request構建帶有請求頭的物件
resobj = request.Request(url,headers=headers)
from urllib import request, parse

# 使用cookiejar獲取cookie
from http import cookiejar

# 構造cookie_bag儲存物件
cookie_bag = cookiejar.CookieJar()
# 請求頁面時將獲取的cookie存入cookie_bag中
handler = request.HTTPCookieProcessor(cookie_bag)
# 在相應頁面時處理cookie的時候使用handler內部中的build_opener建立一個opener物件,用來儲存cookie物件
opener = request.build_opener(handler)
# url建議從network進行復制選擇
url = 'http://www.renren.com/ajaxLogin/login?'
# form可以F12檢視從network中檢視一下登入的Form Data,如沒有登入一下進行重新整理,並勾選Preserve log
form = {
    'email':'
[email protected]
', 'icode':'', 'origURL:http':'//www.renren.com/home', 'domain':'renren.com', 'key_id':'1', 'captcha_type':'web_login', 'password':'xxxxx', 'rkey':'cb15f985754fd884a44506ff5db1256e', 'f':'', } form = parse.urlencode(form).encode('utf-8') response = opener.open(url, form) res = response.read() print(res)