日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【Python】爬虫学习

發(fā)布時間:2025/4/5 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】爬虫学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
""" # urllib:urllib庫,它是Python內置的HTTP請求庫,也就是說不需要額外安裝即可使用。它包含如下4個模塊。 # request:它是最基本的HTTP請求模塊,可以用來模擬發(fā)送請求。就像在瀏覽器里輸入網(wǎng)址然后回車一樣,只需要給庫方法傳入URL以及額外的參數(shù),就可以模擬實現(xiàn)這個過程了。 # error:異常處理模塊,如果出現(xiàn)請求錯誤,我們可以捕獲這些異常,然后進行重試或其他操作以保證程序不會意外終止。 # parse:一個工具模塊,提供了許多URL處理方法,比如拆分、解析、合并等。 # robotparser:主要是用來識別網(wǎng)站的robots.txt文件,然后判斷哪些網(wǎng)站可以爬,哪些網(wǎng)站不可以爬,它其實用得比較少。 """ import urllib.request import urllib.parse import socket import urllib.error""" # 語法:urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) # 功能:獲取網(wǎng)站的信息 # url:網(wǎng)站的URL地址 # data:附加數(shù)據(jù),data參數(shù)是可選的。如果要添加該參數(shù),并且如果它是字節(jié)流編碼格式的內容,即bytes類型,則需要通過bytes()方法轉化。另外,如果傳遞了這個參數(shù),則它的請求方式就不再是GET方式,而是POST方式。 # timeout:超時時間 """ response = urllib.request.urlopen("https://www.python.org")# 輸出返回的網(wǎng)頁內容 print(response.read().decode('utf-8')) # 輸出響應的類型:<class 'http.client.HTTPResponse'> print(type(response)) # 輸出響應的狀態(tài)碼,如200代表請求成功,404代表網(wǎng)頁未找到等。 print(response.status) # 輸出響應的頭信息 print(response.getheaders()) # 輸出通過調用getheader()方法并傳遞一個參數(shù)Server獲取了響應頭中的Server值,結果是nginx,意思是服務器是用Nginx搭建的。 print(response.getheader("Server"))# 這里我們傳遞了一個參數(shù)word,值是hello。它需要被轉碼成bytes(字節(jié)流)類型。其中轉字節(jié)流采用了bytes()方法,該方法的第一個參數(shù)需要是str(字符串)類型,需要用urllib.parse模塊里的urlencode()方法來將參數(shù)字典轉化為字符串;第二個參數(shù)指定編碼格式,這里指定為utf8。 data = bytes(urllib.parse.urlencode({"word": "hello"}), encoding = "utf-8") response_data = urllib.request.urlopen("https://httpbin.org/get", timeout=1)print(response.read())try:response_timeout = urllib.request.urlopen("https://httpbin.org/get", timeout = 0.1) except urllib.error.URLError as e:if isinstance(e.reason, socket.timeout):print("Time Out")request = urllib.request.Request("https://python.org") response_request = urllib.request.urlopen(request) print(response_request.read().decode("utf-8"))''' # 利用urlopen()可以實現(xiàn)最基本請求的發(fā)起,但這幾個簡單的參數(shù)不足以構建一個完整的請求。 # 如果請求中加入Headers等信息,就可以利用更加強大的Request類來構建 # class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None) # url:用于請求URL,這是必傳參數(shù),其他都是可選參數(shù) # data:如果data要傳,必須傳bytes(字節(jié)流)類型的。如果它是字典,可以先用urllib.parse模塊里的urlencode()編碼 # headers:是一個字典,它是請求頭,我們可以在構造請求時通過headers參數(shù)直接構造,也可通過調用請求實例的add_header()方法添加 # 添加請求頭最常用的方法就是通過修改User-Agent來偽裝瀏覽器,默認的User-Agent時Python-urllib,我們可以通過修改它來偽裝瀏覽器 # 比如偽裝火狐瀏覽器,可把它設置為:Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11 # origin_req_host:指的是請求方的host名稱或者IP地址 # unverifiable:表示這個請求是否是無法驗證的,默認False,意思就是說用戶沒有足夠權限來選擇接收這個請求的結果 # method:是一個字符串,用來指示請求使用的方法,比如GET、POST、和PUT等 ''' url = 'http://httpbin.org/post' headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)','Host': 'httpbin.org' } dict = {'name': 'Germey' } data = bytes(parse.urlencode(dict), encoding='utf8') req = request.Request(url=url, data=data, headers=headers, method='POST') response = request.urlopen(req) print(response.read().decode('utf-8')) 《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【Python】爬虫学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。