日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

【Python】爬虫学习

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

總結(jié)

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

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