在python爬蟲中,要想獲取url的原網頁,就要用到衆所周知的強大好用的requests庫,在2018年python文檔年度總結中,requests庫使用率排行第一,接下來就開始簡單的使用requests庫吧.html
配置好python環境後,python配置你們應該都會,至於path路徑下載安裝界面右下角就有add to path 很簡便,這裏主要是window環境下的使用,至於Linux環境,我暫時尚未深刻了解,用yum install或者 wget命令都是可行的.python
在window環境下,推薦是用pip進行安裝,由於便捷並且不用考慮文件的解壓路徑:json
pip install requests
首先requests有文檔說明,requests文檔 多觀察庫文檔,有利於咱們瞭解該庫建立者的意圖,如今能夠嘗試使用requests庫獲取一個網頁的源代碼了:代碼以下瀏覽器
import requests url='https://www.cnblogs.com/hxms/p/10412179.html' response=requests.get(url) print(respones.text)
可是爲了更好獲取源代碼,還須要對該代碼進行必定的優化,好比是否考慮statue_code==200,響應碼是否正常,正常還能夠請求該網頁,不然返回錯誤緣由,代碼以下:服務器
import requests def get_page(): try: url="https://www.cnblogs.com/hxms/p/10412179.html" response=requests.get(url) if response.status_code==200: return response.text except requests.ConnectionError: return None get_page()
運用了get_page的函數,對requests的方法進行優化,最後還能夠添加main函數進行打印輸出python爬蟲
def main(): data=get_page() print(data) if __name__ == "__main__": main()
進行以下ide
這樣就能夠簡單的獲取網頁的源代碼了,可是在現實過程當中,網頁是通過js渲染的,便可以理解爲該HTML只是個空體,只是引用了某個js文本,這樣就會形成requests請求的源代碼出現錯誤,形成後期抓不到想要的數據,不過沒有關係,F12提供了強大的抓包工具,不管是Ajax或者是直接js渲染的網頁,咱們都有相應的解決方法,例如利用selenium庫進行自動化運行,抑或是xhr文件裏的json字典格式化存儲,都是能夠解決這些問題的.函數
關於requests庫還有許多參數沒用上,好比proxies(代理,抓取數量過大時會致使該請求網址對咱們的IP進行封禁,致使304請求失敗),headers(頭請求),如今許多網頁會設置反爬蟲設置,若是你不加請求頭的話,服務器是不會返回任何信息給你的,可是requests庫爲你提供了假裝瀏覽器的方法,運用User-Agent;host等運用字典添加進去,更容易獲取咱們想要的信息.更多方法能夠參考上面的requests文檔.
工具