Skip to content

report.md

kaifeng273 edited this page Jun 14, 2022 · 2 revisions

crawler期中報告

crawler是什麼?

網路爬蟲(web crawler),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。

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位址,可能被不同的爬蟲行程抓到。

使用插建 (beautiful soup)

beautiful soup指令

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) 

結果

image

參考來源

https://blog.csdn.net/fei347795790/article/details/90346016?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165521268616782184668410%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165521268616782184668410&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-3-90346016-null-null.nonecase&utm_term=%E7%88%AC%E8%99%AB&spm=1018.2226.3001.4450

https://zh.wikipedia.org/zh-tw/%E7%B6%B2%E8%B7%AF%E7%88%AC%E8%9F%B2

https://ithelp.ithome.com.tw/articles/10202121

Clone this wiki locally