Python爬蟲入門(4):Urllib庫的高級用法

1.設置Headers

有些網站不會同意程序直接用上面的方式進行訪問,如果識別有問題,那么站點根本不會響應,所以為了完全模擬瀏覽器的工作,我們需要設置一些Headers 的屬性。

首先,打開我們的瀏覽器,調試瀏覽器F12,我用的是Chrome,打開網絡監(jiān)聽,示意如下,比如知乎,點登錄之后,我們會發(fā)現(xiàn)登陸之后界面都變化 了,出現(xiàn)一個新的界面,實質上這個頁面包含了許許多多的內容,這些內容也不是一次性就加載完成的,實質上是執(zhí)行了好多次請求,一般是首先請求HTML文 件,然后加載JS,CSS 等等,經過多次請求之后,網頁的骨架和肌肉全了,整個網頁的效果也就出來了。

拆分這些請求,我們只看一第一個請求,你可以看到,有個Request URL,還有headers,下面便是response,圖片顯示得不全,小伙伴們可以親身實驗一下。那么這個頭中包含了許許多多是信息,有文件編碼啦,壓縮方式啦,請求的agent啦等等。

其中,agent就是請求的身份,如果沒有寫入請求身份,那么服務器不一定會響應,所以可以在headers中設置agent,例如下面的例子,這個例子只是說明了怎樣設置的headers,小伙伴們看一下設置格式就好。

importurllib

importurllib2

url='http://www.server.com/login'

user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

values={'username':'cqc','password':'XXXX'}

headers={'User-Agent':user_agent}

data=urllib.urlencode(values)

request=urllib2.Request(url,data,headers)

response=urllib2.urlopen(request)

page=response.read()

這樣,我們設置了一個headers,在構建request時傳入,在請求時,就加入了headers傳送,服務器若識別了是瀏覽器發(fā)來的請求,就會得到響應。

另外,我們還有對付”反盜鏈”的方式,對付防盜鏈,服務器會識別headers中的referer是不是它自己,如果不是,有的服務器不會響應,所以我們還可以在headers中加入referer

例如我們可以構建下面的headers

headers={'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',

'Referer':'http://www.zhihu.com/articles'}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,639評論 19 139
  • 1.設置Headers有些網站不會同意程序直接用上面的方式進行訪問,如果識別有問題,那么站點根本不會響應,所以為了...
    babybus_hentai閱讀 362評論 0 0
  • Python學習網絡爬蟲主要分3個大的版塊:抓取,分析,存儲 另外,比較常用的爬蟲框架Scrapy,這里最后也詳細...
    楚江數據閱讀 1,532評論 0 6
  • 1 先扒一個網頁下來看看 import urllib2response=urllib2.urlopen("http...
    Master_K閱讀 893評論 0 3
  • 如何提高你的選擇質量? 我認為提高選擇的質量無非就是擁有大數據,深入分析每一種選擇背后所存在的利益大小,分析利益大...
    智御閱讀 170評論 0 0

友情鏈接更多精彩內容