摘要:數據傳送上面介紹了參數,這里就是將需要的參數通過方式傳入上述代碼引入了庫,現在我們模擬登陸京東商場,但是應該是無法登陸的,一般都是需要設置一些頭部的工作,或者其它的參數,這里使用了庫對參數,進行一下。
了解了 前面的環境搭建,以及python的基礎知識的學習,咱們接下來學習一下,如何將網頁扒下來
一、案例介紹當我們打開瀏覽器,打開頁面,看到的是好看的頁面,但是其實是由瀏覽器解釋才呈現的,實際上這好看的頁面,是通過html,css,js組合形成的。
接下來,我們就寫個小例子來扒下來網頁(本篇文章,以python2.7為例子)
# coding:utf-8 import urllib2 response = urllib2.urlopen("http://music.163.com/") print response.read()二、分析案例的方法
然后讓我們來分析一下上述例子的代碼是干啥的
第一行:import urllib2
該行代碼是通過import將python的urllib2庫引入
第二行:response = urllib2.urlopen("http://music.163.com/")
這行代碼是調用urllib2庫中的urlopen方法,然后傳入了一個網易云音樂的url地址,urlopen方法為
`urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
cafile=None, capath=None, cadefault=False, context=None)`
其中第一個參數就是url,然后其它幾個參數都是可以不傳送的,其中第二個參數表示的訪問該網址需要的傳送的數據,第三個參數timeout表示的是過期時間,默認值是socket._GLOBAL_DEFAULT_TIMEOUT
第三行:print response.read()
其中response對象有一個read方法,可以返回獲取到的頁面內容,千萬記得添加上read方法,不然會出現打印出來是對象。
將上述例子修改下,如下,其中urlopen是可以傳入一個request請求,它是一個Request類的實例,構造的時候可以傳入url,data,header等參數,它可以讓我們構造一個request對象,在request請求中添加相關的header頭文件。
# coding:utf-8 import urllib2 request = urllib2.Request("http://music.163.com/") response = urllib2.urlopen(request) print response.read()四、POST和GET數據傳送 GET 數據傳送
GET方式我們可以直接把參數寫到網址上面,直接構建一個帶參數的URL出來即可。
import urllib import urllib2 values = {} values["wd"] = "zs" data = urllib.urlencode(values) url = "http://www.baidu.com/s" + "?" + data request = urllib2.Request(url) response = urllib2.urlopen(request) print response.read()POST 數據傳送
上面介紹了data參數 ,這里就是將需要的參數 通過data方式傳入
import urllib import urllib2 values = {} values["username"] = "1016903103@qq.com" values["password"] = "XXXX" data = urllib.urlencode(values) url = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F" request = urllib2.Request(url,data) response = urllib2.urlopen(request) print response.read()
上述代碼引入了urllib庫,現在我們模擬登陸京東商場,但是應該是無法登陸的,一般都是需要設置一些頭部header的工作,或者其它的參數,這里使用了urllib庫對參數,進行urlencode一下。
五、設置headers上面描述了一下,一般請求都需要帶上各種header屬性。
看下圖,是京東的登陸頁面,然后可以打開谷歌瀏覽器F12,然后可以看到請求,上面headers設置了挺多的參數,其中agent是請求的身份,還有refer,都是用來反盜鏈。看下面例子
import urllib import urllib2 url = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F" user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36" refer ="https://www.jd.com/" values = {"username" : "cqc", "password" : "XXXX" } headers = { "User-Agent" : user_agent,"Refer":refer } data = urllib.urlencode(values) request = urllib2.Request(url, data, headers) response = urllib2.urlopen(request) page = response.read()
一般進行爬蟲的時候,可以考慮檢查瀏覽器的headers的內容
六、Proxy(代理)的設置urllib2 默認會使用 http_proxy 來設置 HTTP Proxy。假如一個網站它會某一段時間某個IP 的訪問次數,如果訪問次數過多,它會禁止你的訪問。所以你可以設置一些來幫助你做工作,每隔一段時間換一個代理,網站君都不知道是誰在搗鬼了,這酸爽!
下面一段代碼說明設置方法
import urllib2 enable_proxy = True proxy_handler = urllib2.ProxyHandler({"http" : "http://some-proxy.com:8080"}) 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)七、使用 HTTP 的 PUT 和 DELETE 方法
下面的案例是用來多帶帶設置http的put和delete,請求
import urllib2 request = urllib2.Request(uri, data=data) request.get_method = lambda: "PUT" # or "DELETE" response = urllib2.urlopen(request)推薦閱讀:
【爬蟲系列之一】爬蟲開發環境的搭建
更多精彩內容,歡迎大家關注我的微信公眾號:喝醉的清茶
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41855.html
摘要:一的處理出現產生的原因很多,比如網絡沒法連接,連接不到服務器,或者服務器不存在。二的使用,一般是某些網站為了辨別用戶身份,進行跟蹤,從而存儲在客戶端的數據。模塊的主要作用是提供可存儲的對象,以便于與模塊配合使用來訪問資源。 一、urlError的處理 出現urlError產生的原因很多,比如:網絡沒法連接,連接不到服務器,或者服務器不存在。在代碼中,我們需要用try-except的語句...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:蜂鳥網圖片簡介今天玩點新鮮的,使用一個新庫,利用它提高咱爬蟲的爬取速度。上下文不在提示,自行搜索相關資料即可創建一個對象,然后用該對象去打開網頁。可以進行多項操作,比如等代碼中等待網頁數據返回創建線程,方法負責安排執行中的任務。 1. 蜂鳥網圖片-簡介 今天玩點新鮮的,使用一個新庫 aiohttp ,利用它提高咱爬蟲的爬取速度。 安裝模塊常規套路 pip install aiohtt...
摘要:蜂鳥網圖片簡介今天玩點新鮮的,使用一個新庫,利用它提高咱爬蟲的爬取速度。上下文不在提示,自行搜索相關資料即可創建一個對象,然后用該對象去打開網頁。可以進行多項操作,比如等代碼中等待網頁數據返回創建線程,方法負責安排執行中的任務。 1. 蜂鳥網圖片-簡介 今天玩點新鮮的,使用一個新庫 aiohttp ,利用它提高咱爬蟲的爬取速度。 安裝模塊常規套路 pip install aiohtt...
摘要:蜂鳥網圖片簡介今天玩點新鮮的,使用一個新庫,利用它提高咱爬蟲的爬取速度。上下文不在提示,自行搜索相關資料即可創建一個對象,然后用該對象去打開網頁。可以進行多項操作,比如等代碼中等待網頁數據返回創建線程,方法負責安排執行中的任務。 1. 蜂鳥網圖片-簡介 今天玩點新鮮的,使用一個新庫 aiohttp ,利用它提高咱爬蟲的爬取速度。 安裝模塊常規套路 pip install aiohtt...
閱讀 3554·2019-08-30 12:58
閱讀 932·2019-08-29 16:37
閱讀 2808·2019-08-29 16:29
閱讀 3111·2019-08-26 12:18
閱讀 2376·2019-08-26 11:59
閱讀 3420·2019-08-23 18:27
閱讀 2795·2019-08-23 16:43
閱讀 3309·2019-08-23 15:23