如何不通過瀏覽器的幫助來格式化和處理資料
本章任務: 首先向網路伺服器傳送get請求以獲取具體網頁,再從網頁讀取html內容,最後做一些簡單的資訊提取,將我們要找的內容分離出來。
一、網路連線
1、網際網路實現過程(待補充)
1.3、python是如何實現的:
from urllib.request import urlopen
html = urlopen("")
print(html.read())
urllib : python的標準庫,,包含了從網路請求資料,處理cookie,甚至改變請求頭和使用者**這些元資料的函式。
urlopen: 開啟並讀取乙個從網路獲取的遠端物件。
二、beautifulsoup
1、功能: 通過定位html標籤來格式化和組織複雜的網路資訊,用簡單易用的python物件為我們展現xml結構資訊。
2、安裝:
mac: sudo easy_install pip //mac
pip install beautifulsoup4
pip install beautifulsoup4 // windows: cmd進入 pip.exe 所在資料夾
sudo apt-get install python-bs4 // linux
3、執行
from urllib.request import urlopen
from bs4 import beautifulsoup
html = urlopen("")
bsobj = beautifulsoup(html.read(), "lxml")
# print(bsobj.h1)
print(bsobj)
4、可靠的網路連線
html = urlopen("")
可能出現的異常:
(1)網頁在伺服器上不存在(獲取頁面的時候出錯)
(2)伺服器不存在
第一種,返回http error,「404 page not found」「500 internet server error」
處理異常:
# 返回空值,中斷程式,或者執行另乙個方案
else:
# 程式繼續(若已在上面異常捕獲中返回或中斷)
# 則不需要使用 else ,這段就不會執行。第二種,鏈結打不開或打錯了,urlopen會返回乙個none
if html is none:
print("url is not found")
else:
# 程式繼續
attributeerror:
若要呼叫乙個不存在的標籤,就會出現attributeerror。
如
print(bsobj.nonexistingtag.sometag) # 報錯
為避免,需檢查:
try:
badcontent = bsobj.nonexistingtag.anothertag
except attributeerror as e:
print("tag was not found")
else:
if badcontent == none:
print("tag was not found")
else:
print("badcontent")
重新組織**:(返回網頁標題)from urllib.request import urlopen
第1章總結 初見網路爬蟲
1.urllib 還是 urllib2 如果你用過 python 2.x 裡的 urllib2 庫,可能會發現 urllib2 與 urllib 有些不同。在 python 3.x 裡,urllib2 改名為 urllib,被分成一些子模組 urllib.request urllib.parse 和...
python資料採集1 初見爬蟲
註解 現在本地的hosts檔案中找url對應的ip,找不到舊區dns伺服器中找 根據ip找到伺服器,建立tcp連線 將url後面的一坨請求傳送給伺服器 伺服器根據收到的請求,將對應的資源傳送給客戶端 讓我們看看 python 是如何實現的 coding utf 8 created on sun ja...
網路爬蟲一
乙個通用的網路爬蟲的框架如圖所示 網路爬蟲的基本工作流程如下 在爬蟲系統中,待抓取url佇列是很重要的一部分。待抓取url佇列中的url以什麼樣的順序排列也是乙個很重要的問題,因為這涉及到先抓取那個頁面,後抓取哪個頁面。而決定這些url排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略 1...