『壹』 一勞永逸!一步到位將python pip源換為豆瓣源,瞬間起飛!!!
提升Python pip安裝速度,選擇豆瓣源成為理想解決方案。
遇到pip安裝包速度慢或失敗的情況,你是否感到沮喪?別擔心,有多種方法能讓你迅速提升安裝效率。
方法一:臨時使用豆瓣源
只需在安裝包前添加-i 豆瓣源指令,便可即刻提升速度。豆瓣源以其豐富的包資源和穩定的服務,成為眾多開發者的選擇。
使用示例:
pip install 包名 -i https://mirrors.163.com/pypi/simple
方法二:一勞永逸修改配置
對於Windows用戶,推薦通過手動修改pip.ini配置文件實現豆瓣源設置。
步驟如下:
1. 打開命令提示符
2. 創建pip.ini文件
3. 添加豆瓣源信息至pip.ini文件
完成設置後,無需每次安裝包時手動添加-i指令,實現一勞永逸的安裝提速。
方法二(自動修改):一鍵設置豆瓣源
通過安裝特定工具,自動修改配置文件,簡化設置過程。安裝後,使用默認設置即可享受豆瓣源帶來的高效體驗。
驗證安裝速度,你將直觀感受到顯著提升。從此,pip安裝包不再是困擾。
恭喜你,現在已實現一勞永逸的安裝加速。享受高效編程體驗,大贊!
『貳』 【Python爬蟲】分析網頁真實請求
1、抓取網頁、分析請求
2、解析網頁、尋找數據
3、儲存數據、多頁處理
翻頁有規律:
很多網址在第一頁時並沒有變化,多翻下一頁後規律就出來,比如 豆瓣第一頁 和 豆瓣第三頁
發現start為40,limit=20,所以猜測start=0就是第一頁,每頁顯示20條數據,對於第三頁顯示的參數可以一個個刪除驗證,可以減去不必要的參數, 但是刪除前一定要做好數據的對比
(1) 文本框輸入後產生一個請求,如常見的登錄、注冊頁面
Referer:表示當前請求的來源
Request URL:表示實際請求地址
翻頁後URL不變,該如何尋找請求?
如: http://www.zkh360.com/zkh_catalog/3.html
通過對比可以發現網站是通過pageIndex參數控制翻頁的,?表示連接
接下來用抓包工具分析下 ,從第四頁開始看URL就知道了,但是前面幾面需要查看請求的參數,這里偏多,就切換到【Inspectors--Webforms】選項,看的比較直觀
類似的網站還有 今日頭條 ,有興趣的朋友可以去研究下
(可通過獲取max_behot_time的值而改變as和cp)
『叄』 python爬蟲怎麼處理豆瓣網頁異常請求
1.URLError
首先解釋下URLError可能產生的原因:
網路無連接,即本機無法上網
連接不到特定的伺服器
伺服器不存在
在代碼中,我們需要用try-except語句來包圍並捕獲相應的異常。下面是一個例子,先感受下它的風騷
Python
1
2
3
4
5
6
7
import urllib2
requset = urllib2.Request('http://www.xxxxx.com')
try:
urllib2.urlopen(requset)
except urllib2.URLError, e:
print e.reason
我們利用了 urlopen方法訪問了一個不存在的網址,運行結果如下:
Python
1
[Errno 11004] getaddrinfo failed
它說明了錯誤代號是11004,錯誤原因是 getaddrinfo failed
2.HTTPError
HTTPError是URLError的子類,在你利用urlopen方法發出一個請求時,伺服器上都會對應一個應答對象response,其中它包含一個數字」狀態碼」。舉個例子,假如response是一個」重定向」,需定位到別的地址獲取文檔,urllib2將對此進行處理。
其他不能處理的,urlopen會產生一個HTTPError,對應相應的狀態嗎,HTTP狀態碼表示HTTP協議所返回的響應的狀態。下面將狀態碼歸結如下:
100:繼續 客戶端應當繼續發送請求。客戶端應當繼續發送請求的剩餘部分,或者如果請求已經完成,忽略這個響應。
101: 轉換協議 在發送完這個響應最後的空行後,伺服器將會切換到在Upgrade 消息頭中定義的那些協議。只有在切換新的協議更有好處的時候才應該採取類似措施。
102:繼續處理 由WebDAV(RFC 2518)擴展的狀態碼,代表處理將被繼續執行。
200:請求成功 處理方式:獲得響應的內容,進行處理
201:請求完成,結果是創建了新資源。新創建資源的URI可在響應的實體中得到 處理方式:爬蟲中不會遇到
202:請求被接受,但處理尚未完成 處理方式:阻塞等待
204:伺服器端已經實現了請求,但是沒有返回新的信 息。如果客戶是用戶代理,則無須為此更新自身的文檔視圖。 處理方式:丟棄
300:該狀態碼不被HTTP/1.0的應用程序直接使用, 只是作為3XX類型回應的默認解釋。存在多個可用的被請求資源。 處理方式:若程序中能夠處理,則進行進一步處理,如果程序中不能處理,則丟棄
301:請求到的資源都會分配一個永久的URL,這樣就可以在將來通過該URL來訪問此資源 處理方式:重定向到分配的URL
302:請求到的資源在一個不同的URL處臨時保存 處理方式:重定向到臨時的URL
304:請求的資源未更新 處理方式:丟棄
400:非法請求 處理方式:丟棄
401:未授權 處理方式:丟棄
403:禁止 處理方式:丟棄
404:沒有找到 處理方式:丟棄
500:伺服器內部錯誤 伺服器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在伺服器端的源代碼出現錯誤時出現。
501:伺服器無法識別 伺服器不支持當前請求所需要的某個功能。當伺服器無法識別請求的方法,並且無法支持其對任何資源的請求。
502:錯誤網關 作為網關或者代理工作的伺服器嘗試執行請求時,從上游伺服器接收到無效的響應。
503:服務出錯 由於臨時的伺服器維護或者過載,伺服器當前無法處理請求。這個狀況是臨時的,並且將在一段時間以後恢復。
HTTPError實例產生後會有一個code屬性,這就是是伺服器發送的相關錯誤號。
因為urllib2可以為你處理重定向,也就是3開頭的代號可以被處理,並且100-299范圍的號碼指示成功,所以你只能看到400-599的錯誤號碼。
下面我們寫一個例子來感受一下,捕獲的異常是HTTPError,它會帶有一個code屬性,就是錯誤代號,另外我們又列印了reason屬性,這是它的父類URLError的屬性。
Python
1
2
3
4
5
6
7
8
import urllib2
req = urllib2.Request('httt/cqcre')
try:
urllib2.urlopen(req)
except urllib2.HTTPError, e:
print e.code
print e.reason
運行結果如下
Python
1
2
403
Forbidden
錯誤代號是403,錯誤原因是Forbidden,說明伺服器禁止訪問。
我們知道,HTTPError的父類是URLError,根據編程經驗,父類的異常應當寫到子類異常的後面,如果子類捕獲不到,那麼可以捕獲父類的異常,所以上述的代碼可以這么改寫
Python
1
2
3
4
5
6
7
8
9
10
11
import urllib2
req = urllib2.Request('hcqcre')
try:
urllib2.urlopen(req)
except urllib2.HTTPError, e:
print e.code
except urllib2.URLError, e:
print e.reason
else:
print "OK"
如果捕獲到了HTTPError,則輸出code,不會再處理URLError異常。如果發生的不是HTTPError,則會去捕獲URLError異常,輸出錯誤原因。
另外還可以加入 hasattr屬性提前對屬性進行判斷,代碼改寫如下
Python
1
2
3
4
5
6
7
8
9
10
11
12
import urllib2
req = urllib2.Request('httcqcre')
try:
urllib2.urlopen(req)
except urllib2.URLError, e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason
else:
print "OK"
首先對異常的屬性進行判斷,以免出現屬性輸出報錯的現象。
以上,就是對URLError和HTTPError的相關介紹,以及相應的錯誤處理辦法,小夥伴們加油!
『肆』 python爬蟲--10-使用python爬取豆瓣正在上映的電影
使用Python進行網頁爬取是一項實用技能,讓我們通過實例學習如何獲取豆瓣上正在上映的電影信息。下面,我將逐步解析爬取流程並提供代碼示例。
首先,我們要明確目標內容,包括電影名字、年份、時長、地區、演員和封面圖片。接下來,我們按照以下步驟進行。
1. 確定頁面與內容定位:
- 通過瀏覽器的開發者工具,找到目標信息所在的HTML代碼區塊。確保能識別出包含所需數據的元素。
2. 確定XPath路徑:
- 確定每個元素的XPath路徑,以便在Python代碼中精確定位。
3. 代碼實現:
- 使用Python庫如BeautifulSoup和requests獲取網頁HTML內容。
- 遍歷頁面中的列表元素(通常為
具體代碼實現如下:
1. 獲取整個頁面HTML:
- 使用requests庫獲取網頁內容。
2. 定位正在上映電影塊:
- 使用BeautifulSoup解析HTML,定位到包含正在上映電影信息的Div區塊。
3. 提取LI標簽信息:
- 遍歷Div內的所有
4. 輸出結果:
- 將提取的信息列印或存儲到文件中。
完整代碼示例如下(僅展示部分關鍵代碼):
注意:此示例代碼僅為簡化版本,實際應用中可能需要根據目標網站結構調整代碼。若需要完整的代碼實現及更詳細的教程,請參考相關在線教程或加入專業學習社區。
更多Linux相關知識,包括命令、操作系統管理與編程技巧等,可訪問公眾號「運維家」,回復「172」獲取詳細信息。
Linux技術領域覆蓋廣泛,從基本命令操作到高級系統管理、開發環境配置等,均可在「運維家」公眾號中找到相應的資源和教程。
『伍』 python 代碼里如何判斷成功登錄豆瓣
#!py3
#_*_coding:utf-8_*_
importos
importsqlite3
importrequests
fromwin32.
defgetcookiefromchrome(host='.douban.com'):
'''最好還是從瀏覽器自動獲取當前登錄帳號的cookies,
然後再抓取內容,這里是演示從GoogleChrome中獲取cookies的例子。
host登錄伺服器的主域名,注意要在前面加個點號。
'''
cookiepath=os.environ['LOCALAPPDATA']+r""
sql="selecthost_key,name,encrypted_valuefromcookieswherehost_key='%s'"%host
withsqlite3.connect(cookiepath)asconn:
cu=conn.cursor()
cookies={name:CryptUnprotectData(encrypted_value)[1].decode()forhost_key,name,encrypted_valueincu.execute(sql).fetchall()}
print(cookies)
returncookies
url='http://www.douban.com'
httphead={'User-Agent':('Mozilla/5.0(WindowsNT6.2;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/66.0.3359.181Safari/537.36'),}
r=requests.get(url,headers=httphead,cookies=getcookiefromchrome('.douban.com'),allow_redirects=1)
print(r.text)
需要安裝的第三方模塊:requests,pywin32