網路爬蟲——Urllib模組實戰專案(含程式碼)爬取你的第一個網站
之前給大家分享了正規表示式和XPath表示式的內容,有了以上基礎今天來給大家帶來了網路爬蟲實戰課程,教大家爬取第一個網站
什麼是Urllib模組
Urllib是Python提供的一個用於操作URL的模組,這個庫在我們爬取網頁的時候會經常用到。
Urllib例項1(將內容爬到記憶體中)
import urllib.request,re
#urllib.request.urlopen(連結)代表你要爬取的網站
#.read()讀取網站內容
#.decode("utf-8","ignore")按照utf-8方式解碼,加上ignore成功率會更高
data = urllib.request.urlopen("http://www.jd.com").read().decode("utf-8","ignore")
#這就是之前學過的正規表示式,如果不懂可以看本部落格最頂部的正規表示式連結,那裡有講解
string = "<title>(.*?)</title>"
biaoti = re.compile(string,re.S).findall(data)
print(biaoti)
執行結果如下:輸出了www.jd.com的標題
Urllib例項2(將內容爬到電腦硬碟中)
import urllib.request
#urllib.request.urlretrieve(網址,檔案位置)將爬取到的檔案儲存到電腦指定的位置
urllib.request.urlretrieve("http://www.jd.com",filename="D:\\微信公眾號:驕傲的程式設計師\\京東.html")
執行結果如下:將www.jd.com的原始碼儲存到了:D:\微信公眾號:驕傲的程式設計師\京東.html中
Urllib例項3(瀏覽器偽裝)
以上兩種方法只適用於部分網站,對於一部分反爬的網站是不可以的,比如糗事百科就必須是瀏覽器才能爬取,直接用編輯器爬取是行不通的,所以要將自己的編輯器偽裝成瀏覽器,才可以繼續爬取內容,將編輯器偽裝成瀏覽器其實很簡單,只要將某一個瀏覽器的User-Agent寫在自己的程式碼中即可。
#大家可以使用這些我搜集的User-Agent,大家也可以在瀏覽器中自己查詢
#查詢方法:F12,Network下的最後一個Request heard有一個User-Agent:後面就是
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",#360
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36",#谷歌
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0",#火狐
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0",#火狐
瀏覽器偽裝辦法:
import urllib.request
url = "http://www.qiushibaike.com/"
#宣告一個urllib.request.build_opener()物件
opener = urllib.request.build_opener()
#以JSON格式(鍵值對)儲存一個User-Agent
UA = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")
#將User-Agent賦值給opener.addheaders
opener.addheaders=[UA]
#將urllib.request的install_opener改成我們們的
urllib.request.install_opener(opener)
#這回在爬就沒毛病啦
data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
string = "<title>(.*?)</title>"
biaoti = re.compile(string,re.S).findall(data)
print(biaoti)
執行結果如下:輸出了www.qiushibaike.com的標題
如果按照之前的方法的話,就會出現以下錯誤:遠端端關閉連線,無響應,說明請求被對方伺服器拒絕了。
http.client.RemoteDisconnected: Remote end closed connection without response
Urllib例項4(使用者代理池)
然而有的時候,瀏覽器會檢查怎麼總是這一個瀏覽器訪問我呀,也能也會拒絕我們們的訪問,所以,我們用了使用者代理池的方法,就是在一個陣列中儲存多個User-Agent,我們叫他代理池,每次隨機呼叫其中一個User-Agent,這樣就會解決這個問題,例項如下:
import urllib.request,re,random
#建立一個使用者代理池陣列
uapools=[
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",#360
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36",#谷歌
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0",
]
#定義一個方法UA()
def UA():
#建立一個urllib.request.build_opener()物件
opener = urllib.request.build_opener()
#每次從uapools中隨機選取一個User-Agent
thisua = random.choice(uapools)
#以JSON格式(鍵值對)儲存一個User-Agent
ua = ("User-Agent",thisua)
#將User-Agent賦值給opener.addheaders
opener.addheaders=[ua]
#將urllib.request的install_opener改成我們們的
urllib.request.install_opener(opener)
print("當前使用User-Agent:"+str(thisua))
url = "http://www.qiushibaike.com/"
for i in range(0,10):
UA()
#這回就可以快樂的爬取網站內容啦
data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
string = "<title>(.*?)</title>"
biaoti = re.compile(string,re.S).findall(data)
print(biaoti)
執行結果如下:輸出了www.qiushibaike.com的標題10次
以上就是一些爬蟲基礎,接下來還會持續更新這篇部落格,希望大家支援謝謝大家。
我還寫了一篇爬蟲實戰(含程式碼),大家快來點我檢視吧
相關文章
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- 大型商城網站爬蟲專案實戰網站爬蟲
- 網路爬蟲——專案實戰(爬取糗事百科所有文章)爬蟲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- Python網路爬蟲實戰小專案Python爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- 網路爬蟲專案爬蟲
- Python3 大型網路爬蟲實戰 003 — scrapy 大型靜態圖片網站爬蟲專案實戰 — 實戰:爬取 169美女圖片網 高清圖片Python爬蟲網站
- Python3爬蟲實戰(urllib模組)Python爬蟲
- 網路爬蟲(六):實戰爬蟲
- 網路爬蟲專案蒐集爬蟲
- 《用Python寫網路爬蟲》--編寫第一個網路爬蟲Python爬蟲
- Python3 大型網路爬蟲實戰 004 — scrapy 大型靜態商城網站爬蟲專案編寫及資料寫入資料庫實戰 — 實戰:爬取淘寶Python爬蟲網站資料庫
- 爬蟲-urllib模組的使用爬蟲
- Python爬蟲小專案:爬一個圖書網站Python爬蟲網站
- Python3 大型網路爬蟲實戰 — 給 scrapy 爬蟲專案設定為防反爬Python爬蟲
- Python網路爬蟲實戰Python爬蟲
- 專案--python網路爬蟲Python爬蟲
- 網路爬蟲(python專案)爬蟲Python
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- 2019最新《網路爬蟲JAVA專案實戰》爬蟲Java
- Python大型網路爬蟲專案開發實戰(全套)Python爬蟲
- Python爬蟲爬取美劇網站Python爬蟲網站
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- 最新《30小時搞定Python網路爬蟲專案實戰》Python爬蟲
- Python靜態網頁爬蟲專案實戰Python網頁爬蟲
- Python使用多程式提高網路爬蟲的爬取速度Python爬蟲
- Python爬蟲—爬取某網站圖片Python爬蟲網站
- Python網路爬蟲實戰專案程式碼大全(長期更新,歡迎補充)Python爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- 【Python爬蟲9】Python網路爬蟲例項實戰Python爬蟲
- 爬蟲專案實戰(一)爬蟲
- 爬蟲實戰專案集合爬蟲
- 爬蟲實戰專案合集爬蟲
- ReactPHP 爬蟲實戰:下載整個網站的圖片ReactPHP爬蟲網站
- 爬蟲-urllib3模組的使用爬蟲
- python網路爬蟲--專案實戰--scrapy嵌入selenium,晶片廠級聯評論爬取(6)Python爬蟲晶片