1.urllib2庫的使用示例php
>>> import urllib2 >>> response=urllib2.urlopen('http://www.baidu.com')#獲取網頁信息 >>> print response.read()#打印出網頁信息
首先咱們調用的是urllib2庫裏面的urlopen方法,傳入一個URL,這個網址是百度首頁,協議是HTTP協議,固然你也能夠把HTTP換作FTP,FILE,HTTPS 等等,只是表明了一種訪問控制協議。html
2.分析程序信息python
(1)第一句程序是導入urllib2庫安全
(2)第二句咱們主要看一下urlopen這個函數socket
做用:打開一個網頁信息函數
格式:post
urlopen(url,data,timeout)
參數:三個參數,一個必傳參數URL,兩個參數(date,timeout)網站
第二三個參數是能夠不傳送的,data默認爲空None,timeout默爲 socket._GLOBAL_DEFAULT_TIMEOUTui
第一個參數URL是必需要傳送的,在這個例子裏面咱們傳送了百度的URL,執行urlopen方法以後,返回一個response對象,返回信息便保存在這裏面。url
(3)第三句是把urlopen獲取到的網頁信息,打印出來(response對象有一個read方法,能夠返回獲取到的網頁內容。)
response.read()
response對象有一個read方法,能夠返回獲取到的網頁內容
不加read打印出來的結果,直接打印出了該對象的描述,因此記得必定要加read方法
<addinfourl at 139728495260376 whose fp = <socket._fileobject object at 0x7f1513fb
3.構造一個request
import urllib2 request=urllib2.Request("http://www.baidu.com") response=urllib2.urlopen(request) print response.read()
推薦你們這樣寫,這個程序反應出爬蟲的基本過程。
上面的程序演示了最基本的網頁抓取,不過,如今大多數網站都是動態網頁,須要你動態地傳遞參數給它,它作出對應的響應。因此,在訪問時,咱們須要傳遞數據給它。
數據傳送分爲POST和GET兩種方式,最重要的區別是GET方式是直接以連接形式訪問,連接中包含了全部的參數,固然若是包含了密碼的話是一種不安全的選擇,不過你能夠直觀地看到本身提交了什麼內容。POST則不會在網址上顯示全部的參數,不過若是你想直接查看提交了什麼就不太方便了,你們能夠酌情選擇。
post方法:
1.首先構建一個url 2.傳遞動態信息給url 3.構建一個request 4.構建一個response #代碼——登錄知乎客戶端 import urllib2 value={"username":"1590110xxxx","password":"xx12341234"} date=urllib2.urlencode(value) url="https://www.zhihu.com/" request=urllib2.Request(url,date) response=urllib2.urlopen(request) print response.read()
get方法:
import urllib2 values={'username':'159xxxxxxxx','password':'xx12341234'} date=urllib2.urlencode(values) url='https://www.zhihu.com/' geturl=url+'?'+date request=urllib2.Request(url) response=urllib2.urlopen(request) print response.read()
本文章參考崔慶才博客。
http://python.jobbole.com/81336/