Python爬蟲基礎——requests、BeautifulSoup

最近由於工作需要,所以學習了一些爬蟲小知識。之前一直覺得爬蟲是黑科技,裏面的彎彎繞繞多得很,各種反爬技術和更高的爬蟲手段層出不窮,要學習是個難事。後來發現其實並不難,對於沒有刻意的反爬技術的網站而言,基本就是以下兩個Python庫的使用——

  • requests
  • BeautifulSoup

首先,當然是安裝這兩個包了。安裝後,一個最簡單的爬蟲流程,就是,先向URL發出GET請求:(假設我們爬取某醫院的醫生信息,網址是:https://www.pumch.cn/detail/4126.html

import requests
from bs4 import BeautifulSoup

res = requests.get('https://www.pumch.cn/detail/4126.html')
print(res.text)

結果:

就這樣,用requests庫發出GET請求,就可以非常輕鬆地得到這個頁面的源代碼。注意,這個HTML頁面的源代碼是XML格式的,是由不同的html標籤組成,具體不清楚的同學可以搜搜看。

此外,我們可以看到,爬蟲爬到的結果都很奇怪——是的,都是一堆亂碼,這其實就是編碼問題,改成utf-8編碼就好了:

res.encoding='utf-8'
print(res.text)

結果:

如上圖,這樣的結果就是正常的了。我們使用BeautifulSoup提供的xml解析工具,還可以將結果顯式得更好,也可以通過BeautifulSoup的方法對HTML標籤進行查找,以找到我們想要的內容:

如上圖,我們將返回的網頁源代碼包裝成BeautifulSoup文件,然後使用其`find_all()`方法。find_all()方法可以使用HTML標籤的name、attrs(屬性)、class、id等字段對結果進行篩選。具體BeautifulSoup使用方法可以見此篇:https://cuiqingcai.com/1319.html

最終,我們就輕易地獲取了該頁面上關於“遊凱“醫生的簡介。


當然,也有意外的情況——

有些網站需要安全證書(比如12306),有些網站必須請求頭的“User-Agent”信息才能用Python腳本請求成功,所以我們需要作出相應的設置:

url = 'https://www.zryhyy.com.cn/Html/Doctors/Main/Index_232.html'
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"}
r = requests.get(url, headers=headers, verify=False)

如上代碼,該網頁有證書要求,如果沒有"verify"一項就會報錯。所以我們可以將此項置爲False予以解決;

而有的網站(例如知乎),它要求必須在Header中定義"User-Agent"。我們查看了Chrome瀏覽器的"User-Agent"信息後,仿照該信息自定義Header,並傳入get方法,再發請求,即可得到想要的結果

 

發佈了54 篇原創文章 · 獲贊 84 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章