1、直接訪問
import urllib2
url = ''
#直接請求
response = urllib2.urlopen(url)
#獲取狀態碼,如果是200表示成功
print response.getcode()
#列印**
print response.read()
python語言就是這麼簡潔,幾行**就把網頁爬了下來,是不是很棒?下面我們看一下執行結果:
2、構造request,這是比較規範的格式,有時需要傳送資料,建議這麼寫
import urllib2
url = ''
#建立request物件
request = urllib2.request(url)
#傳送請求
response = urllib2.urlopen(request)
#獲取狀態碼,如果是200表示成功
print response.getcode()
#列印**
print response.read()
3、headers驗證,不是所有的url可以直接訪問的,比如糗事百科
import urllib2
url = ''
request = urllib2.request(url)
response = urllib2.urlopen(request)
print response.getcode()
執行後出現如下錯誤:
這是因為該**不支援程式訪問,我們可以模擬瀏覽器訪問,新增headers驗證
import urllib2
url = '/hot/page/1'
#設定請求身份agent
user_agent = 'mozilla/4.0 (compatible; msie 5.5; windows nt)'
#新增headers
headers =
request = urllib2.request(url,headers = headers)
response = urllib2.urlopen(request)
print response.getcode()
print response.read()
另外,我們還有對付」反盜鏈」的方式,對付防盜煉,伺服器會識別headers中的referer是不是它自己,如果不是,有的伺服器不會響應,所以我們還可以在headers中加入referer
headers =
4、proxy的設定,
urllib2 缺省會使用環境變數 http_proxy 來設定 http proxy。假如乙個**它會檢測某一段時間某個ip 的訪問次數,如果訪問次數過多,它會禁止你的訪問。所以你可以設定一些**伺服器來幫助你做工作,每隔一段時間換乙個**,來防止被禁止訪問。
下面一段**說明了**的設定用法
import urllib2
enable_proxy = true
proxy_handler = urllib2.proxyhandler()
null_proxy_handler = urllib2.proxyhandler({})
if enable_proxy:
opener = urllib2.build_opener(proxy_handler)
else:
opener = urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)
現在很多**已經不能直接訪問了,所以第一種基本用不到的,目前實戰時第二種和第三種比較多,後面還有data表單資料和cookies,其他的方式用到的不是很多,具體實戰遇到了再**吧! Python爬蟲入門筆記(序)
近期迷戀上了python,不外乎 人生短暫,我用python python簡潔,優雅,易懂。大資料分析的前期自然也是少不了資料收集的,做一些爬蟲爬取資料是少不了的。主要學習資料 兩 慕課網和極客學院,兩崔慶才和廖雪峰。程式設計工具從notepad 到eclipse for python再到pycha...
Python爬蟲筆記 一 爬蟲基本入門
最近在做乙個專案,這個專案需要使用網路爬蟲從特定 上爬取資料,於是乎,我打算寫乙個爬蟲系列的文章,與大家分享如何編寫乙個爬蟲。這是這個專案的第一篇文章,這次就簡單介紹一下python爬蟲,後面根據專案進展會持續更新。一 何謂網路爬蟲 網路爬蟲的概念其實不難理解,大家可以將網際網路理解為一張巨大無比的...
python網路爬蟲入門之URL編碼模組
為什麼要給位址 編碼 我們在瀏覽器裡面輸入查詢引數時瀏覽器會自動給我們進行編碼,當我們用爬蟲程式進行獲取內容時瀏覽器識別不了我們所輸入的內容,所以就要編碼給url位址中查詢引數進行編碼 編碼前 https 美女編碼後 https e7 be 8e e5 a5 b3 比如我們在瀏覽器裡輸入 美女 瀏覽...