-
Notifications
You must be signed in to change notification settings - Fork 0
report.md
網路爬蟲(web crawler),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。
實現爬蟲的策略
- 指定頁面下載的選擇策略
- 檢測頁面是否改變的重新存取策略
- 定義如何避免網站過度存取的約定性策略
- 如何部署分散式網路爬蟲的並列策略
- 連結跟隨限制
爬蟲可能只想搜尋HTML頁面而避免其他MIME 類型。為了只請求HTML資源,爬蟲在抓取整個以GET方式請求的資源之前,通過建立HTTP的HEAD請求來決定網路資源的MIME類型。為了避免發出過多的請求,爬蟲會檢查URL和只請求那些以某些字元(如.html, .htm, .asp, .aspx, .php, .jsp, .jspx 或 / )作為字尾的URL。
- URL規格化
爬蟲通常使用某些URL規格化的方式以避免資源的重複爬取。
- 路徑上移爬取
有些爬蟲希望從指定的網站中儘可能地爬取資源。而路徑上移爬蟲就是為了能爬取每個URL里提示出的每個路徑。
- 主題爬取
對於爬蟲來說,一個頁面的重要性也可以說是,給定查詢條件一個頁面相似效能起到的作用。網路爬蟲要下載相似的網頁被稱為主題爬蟲或局部爬蟲。
網站的屬性之一就是經常動態變化,而爬取網站的一小部分往往需要花費幾個星期或者幾個月。等到網站爬蟲完成它的爬取,很多事件也已經發生了,包括增加、更新和刪除。 在搜尋引擎的角度,因為沒有檢測這些變化,會導致儲存了過期的資源。
爬蟲相比於人,可以有更快的檢索速度和更深的層次,所以可能使一個網站癱瘓。
- 網路資源:在很長一段時間,爬蟲使用相當的頻寬高度並列地工作。
- 伺服器超載:尤其是對給定伺服器的存取過高時。
- 品質糟糕的爬蟲,可能導致伺服器或者路由器癱瘓,或者會嘗試下載自己無法處理的頁面。
- 個人爬蟲,如果過多的人使用,可能導致網路或者伺服器阻塞。 對這些問題的局部解決方法是漫遊器排除協定(Robots exclusion protocol),也被稱為robots.txt議定書,這份協定是讓管理員指明網路伺服器的不應該爬取的約定。這個標準沒有包括重新存取一台伺服器的間隔的建議,雖然設定存取間隔是避免伺服器超載的最有效辦法。
一個並列爬蟲是並列執行多個行程的爬蟲。它的目標是最大化下載的速度,同時儘量減少並列的開銷和下載重複的頁面。為了避免下載一個頁面兩次,爬蟲系統需要策略來處理爬蟲執行時新發現的URL,因為同一個URL位址,可能被不同的爬蟲行程抓到。
find()
在find()中輸入節點名,例如ul,就可以獲取有ul節點的内容
find_all()
find_all()會傳回所有成功匹配的內容
find_parent()
find_parent()可獲取前一個節點內容
find_next_sibling()
find_next_sibling()可以獲取下一个同級別的兄弟節點
import requests
from bs4 import BeautifulSoup
r = requests.get("https://www.ptt.cc/bbs/MobileComm/index.html") #將網頁資料GET下來
soup = BeautifulSoup(r.text,"html.parser") #將網頁資料以html.parser
sel = soup.select("div.title a") #取HTML標中的 <div class="title"></div> 中的<a>標籤存入sel
for s in sel:
print(s["href"], s.text)
https://zh.wikipedia.org/zh-tw/%E7%B6%B2%E8%B7%AF%E7%88%AC%E8%9F%B2