104學習

HTTP協定

HTTP協定
關注
邀請朋友
邀請朋友

Line

Facebook

複製連結

取消
是網路溝通的基礎規範,負責瀏覽器與伺服器之間資料的傳輸與請求回應。掌握這項技能,能幫助理解網站如何運作、排解網路問題,對從事網頁開發、後端工程或系統維運的人非常重要。具備相關知識,也能提升與團隊溝通效率,確保應用程式與服務的穩定與安全。
關於教室
關注人數 0 人
104人力銀行從職缺中挑選出常見技能所成立的官方教室,提供大家進行共學互動。
學習主持人
持續分享知識,
有機會成為官方教室主持人
教室標籤
關於教室
關注人數 0 人
104人力銀行從職缺中挑選出常見技能所成立的官方教室,提供大家進行共學互動。
學習主持人
持續分享知識,
有機會成為官方教室主持人
教室標籤
Hi~ 歡迎分享學習資源,有學習問題可匿名向Giver發問!
我要分享
我要提問

HTTP協定 學習推薦

Mike Ku

Learn Code With Mike品牌創辦人

2021/11/18

掌握這6個開發重點優化Python網頁爬蟲的效率與穩定度
Q:如何正確設定Python網頁爬蟲的HTTP Headers(標頭)?
由於現在很多人使用Python網頁爬蟲爬取所需的資料,因此,有些網站會針對網頁爬蟲進行偵測,當Python網頁爬蟲沒有設定HTTP Headers(標頭),很容易就會被擋下來。
所以,Python網頁爬蟲在發送請求時,最好要設定HTTP Headers(標頭),如下範例:
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}
response = requests.get(url, headers=headers, timeout=5)
如果不知道自己的User Agent(使用者代理),可以在Google搜尋的地方輸入「what is my user agnet」,按下搜尋即可得到。
Q:如何正確設定Python網頁爬蟲的設定HTTP Request timeout(超時)屬性?
Python網頁爬蟲在發送請求時,如果沒有設定timeout(超時)屬性,當目標網站沒有回應,請求將會持續嘗試和等待回應,除了造成目標網站的困擾,Python網頁爬蟲也無法繼續執行。如下範例:
headers = {
'user-agent': '...'
}
response = requests.get(url, headers=headers, timeout=5)
只要Python網頁爬蟲發送請求後,5秒內沒有接收回應,就會停止嘗試和等待。
Q:Python網頁爬蟲如何檢查HTTP Status Code(狀態碼)?
Python網頁爬蟲接收到網站的回應結果後,最好可以檢查HTTP Status Code(狀態碼)來確認是否正確,如下範例:
if response.status_code == 200: #正確
#接續執行
或是如下範例:
if response.status_code != 200: #不正確
return False
Q:Python網頁爬蟲如何檢查爬取的元素是否存在?
Python網頁爬蟲最普遍會遇到的問題,就是網頁的元素或樣式改變,導致整個網頁爬蟲中斷和發生錯誤。而最好的預防方法就是先檢查爬取的元素(Element)是否存在,再執行其它的任務,如下範例:
if title: #標題元素存在
#接續執行
else:
# 顯示警告訊息或發送訊息給管理人員
Q:Python網頁爬蟲的例外處理機制是什麼?
為了預防Python網頁爬蟲在執行的過程中,發生預期外的錯誤,以及後續能夠有效追蹤問題,最好實作例外處理機制,如下範例:
try:
# 爬蟲邏輯
...
titles = soup.find_all('h3', {'class': 'post_title'})
result = []
for title in titles:
if title:
result.append(title.getText())
else:
print('元素不存在')
else:
print('回應結果錯誤')
except Exception as e:
print("發生其它錯誤")
print(str(e))
Q:Python網頁爬蟲的檔案輸入/出(I/O)機制是什麼?
Python網頁爬蟲爬取到資料後,最常見的就是資料儲存,像是寫入資料庫、CSV或文字檔等,相較於在爬取的迴圈中進行讀、寫操作,會建議先將爬取的資料打包成串列(List)、元組(Tuple)或字典(Dictionary)等,爬取結束時再一次性寫入較有效率。如下範例:
try:
with open('post.txt', 'w') as file:
file.write('\n'.join(result)) #寫入爬取結果
except Exception as ex:
print(str(ex))
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2021/11/6-tips-to-build-an-efficient-python-scraper.html )網站觀看更多精彩內容。
看更多
2 0 509 2
你可能感興趣的教室