Python爬虫入门三urllib库基本使用
urllib是一個收集了多個涉及了URL的模塊的包:
URL獲取網頁
urllibtest.pyimport urllib2 response = urllib2.urlopen('http://www.baidu.com') print(response.read())運行結果:
C:\Python27\python.exe H:/spiderexercise/spidertest/urllibtest.py <!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#2932e1"><meta name="description" content="全球最大的中文搜索引擎、致力于讓網民更便捷地獲取信息,找到所求。百度超過千億的中文網頁數據庫,可以瞬間找到相關的搜索結果。"><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /><link rel="search"urlopen()一般接受三個參數。
urlopen(url, data, timeout)
第一個參數 url 即為 URL,第二個參數 data 是訪問 URL 時要傳送的數據,第三個 timeout 是設置超時時間。 第二三個參數是可以不傳送的,data 默認為空 None,timeout 默認為 socket._GLOBAL_DEFAULT_TIMEOUT 第一個參數 URL 是必須要傳送的,在這個例子里面我們傳送了百度的 URL,執行 urlopen 方法之后,返回一個 response 對象,返回信息便保存在這里面。
response 對象有一個 read 方法,可以返回獲取到的網頁內容。
print(response.read())
構造request獲取網頁
urlopen()參數可以傳入一個request請求,即Request類的實例。構造request時傳入URL,Data。
urllibtest.pyimport urllib2 url = "http://www.baidu.com" request = urllib2.Request(url) response = urllib2.urlopen(request) print(response.read())POST和GET數據傳送
數據傳送分為 POST 和 GET 兩種方式,兩種方式有什么區別呢? 最重要的區別是 GET 方式是直接以鏈接形式訪問,鏈接中包含了所有的參數,當然如果包含了密碼的話是一種不安全的選擇,不過你可以直觀地看到自己提交了什么內容。POST 則不會在網址上顯示所有的參數,不過如果你想直接查看提交了什么就不太方便了
POST方式
我們引入了 urllib 庫,現在我們模擬登陸 CSDN
當然上述代碼可能登陸不進去,因為 CSDN 還有個流水號的字段,沒有設置全,比較復雜在這里就不寫上去了,在此只是說明登錄的原理。一般的登錄網站一般是這種寫法。 我們需要定義一個字典,名字為 values,參數我設置了 username 和 password,下面利用 urllib 的 urlencode 方法將字典編碼,命名為 data,構建 request 時傳入兩個參數,url 和 data,運行程序,返回的便是 POST 后呈現的頁面內容。
GET方式
至于 GET 方式我們可以直接把參數寫到網址上面,直接構建一個帶參數的 URL 出來即可。
可以 print geturl,打印輸出一下 url,發現其實就是原來的 url 加?然后加編碼后的參數
http://passport.csdn.net/account/login?username=1016903103%40qq.com&password=XXXX 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Python爬虫入门三urllib库基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 清理C盘空间,给Win7释放更多C盘容量
- 下一篇: hihoCoder 1257 Snake