python读取html_从零开始的Python爬虫教程(一):获取HTML文档
前言:在上一節從零開始的Python爬蟲教程(零):粗識HTML結構中,粗略給大家介紹了一下HTML文檔,是為了在接下來的教程中讓大家更容易理解和掌握。在接下來的教程中,需要大家提前安裝python3.x版本,大家不必拘泥于具體的版本,不管安裝的是3.0還是最新的3.7,都不影響接下來的操作。至于安裝教程,這里就不過多贅述了,讀者可自行搜索到詳細的教程。
未安裝requests庫的需要大家安裝一下requests庫,可以用pip安裝,在cmd中執行:
pip install requests
使用pip安裝requests庫
安裝成功之后我們可以在Python自帶的IDE中導入requests庫測試一下是否可用:
可以正常導入
我們平時在瀏覽器中瀏覽網站時,實際上是瀏覽器向網站所在服務器發送HTTP請求下載HTML文檔到本地,然后再經過瀏覽器的解釋、渲染,形成了我們所見的精美的頁面,而原始的HTML文檔實際上是這樣的:
原始文檔
而編寫一個爬蟲,首先最基本的便是向目標服務器發送HTTP請求下載HTML文檔。那么,如何用Python下載到HTML文檔呢?我們仍以上一節中的百度百科為例:
第一步:使用requests.get(url)向目標服務器發起GET請求以下載HTML文檔
復制百科的網址填入
回車后將會發起請求:結果如下
requests庫請求出錯了
閱讀報錯信息,它告訴我們,是因為目標服務器做了過多的網頁重定向,導致請求失敗報錯。這里我們暫時不談何為重定向,只說如何解決當前的問題。而我猜測,是由于百度服務器的反爬策略。何為反爬呢?就是服務器檢測到該請求不是來自正常的瀏覽器,而是來自機器人或其他,因此拒絕你的請求或作其他處理。而爬蟲歸根結底就是模擬瀏覽器發出請求,然后獲取信息。
那么,如何解決當前的問題呢?在HTTP請求頭中加一個“User-Agent”,如下:
headers = {'User-Agent': 'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'}
未報錯,請求成功
可以看到,這次沒有再報錯了。
這里,我們將requests.get(URL)的執行結果賦值給了response變量,而獲取到的數據保存到了該結果的content屬性中,我們可以通過輸出content看一下獲取到的HTML文檔,執行如下代碼:
print(response.content)
由于文檔較大,執行該語句時,Python自帶的IDE可能會卡死,所以我們就輸出前200個字符看一下吧。
輸出結果
為了能夠正常輸出,我們使用專業的Python IDE測試一下:
代碼和輸出
輸出結果
但是我們發現似乎獲取到的HTML文檔亂七八糟的,一個中文字符都沒見到!別慌,這是因為還沒有對文檔進行解碼,所以我們看不懂。
解碼:print(response.content.decode('UTF8'))
輸出解碼后的結果
GOOD!可以看到我們已經能正常閱讀HTML文檔了!
本節就到這里啦,下節教大家如何從HTML文檔中過濾篩選出我們需要的信息。
本節代碼下載地址:github.com/TinyKoko/little-case/blob/master/從零開始的Python爬蟲教程/chapter01.py
供大家下載測試。
總結
以上是生活随笔為你收集整理的python读取html_从零开始的Python爬虫教程(一):获取HTML文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 力积电:今年资本支出约 18.4 亿美元
- 下一篇: Minisforum 首发 AMD R7