python全站爬蟲

2021-08-21 14:22:03 字數 1326 閱讀 8100

通過正規表示式找到當前頁面中的所有url,儲存在set中(剔除重複),用類似圖資料結構的深度優先遍歷演算法遍歷set,實現全站爬蟲。

from urllib import request

from bs4 import beautifulsoup as bs

import re

import time

url = ""

visited = set()

def get_local_pages(url):

try:

time.sleep(1)

web = request.urlopen(url=url)

except:

print("open url",url, "failed error!")

return

soup = bs(web.read(), 'html.parser')

tags = soup.find_all(name="a") #a標籤儲存url,找到所有a標籤

r = re.compile(r'href="/.+?\.html"') #使用非貪婪模式

pages_temp = set()

pages = set()

for tag in tags:

tag = str(tag)

urls = r.findall(tag)

if urls:

pages_temp.add(urls[0])

for page in pages_temp:

if page[7:11] != "jnyzh":

page = "" + page[7:-1]

pages.add(page)

print(pages)

return pages

def dfs(pages): #使用類似圖的深度優先遍歷方法遞迴遍歷url

global visited

if pages is set():

return

for page in pages:

if page not in visited:

print("visiting",page)

visited.add(page)

url = page

print("a")

pages = get_local_pages(url)

dfs(pages)

pages = get_local_pages(url)

dfs(pages)

爬蟲之全站爬取方法

方法 做過好幾個關於 全站的專案,這裡總結一下。先把上面那張圖寫下來,全站爬取的兩種方法 關係網路 優點 簡單 可以抓取 熱門 資料 缺點 無法抓取全量資料 速度慢 需要解決去重問題 可行性 比較高 遍歷id 優點 可以抓取所有資料 不用資料去重 缺點 資源消耗大 速度慢 可能被發現 可行性 僅可用...

全站爬蟲專案一階段總結

這段時間給公司做全站爬蟲。一開始在公司框架內開發,耗費了大量的時間,仍然效果不好 因為受限於框架本身的邏輯,難以實現複雜的業務。後來,轉向了scrapy,並將幾個關鍵的服務,比如鏈結過濾 列表頁識別和過濾,做成單獨的模組或者服務。雖然現在效果仍然不理想,但已經是乙個可用 可調優的框架,在幾個關鍵環節...

Python入門 全站url爬取

作為乙個安全測試人員,面對乙個大型 的時候,手工測試很有可能測試不全,這時候就非常需要乙個通用型的 掃瞄器。當然能直接掃出漏洞的工具也有很多,但這樣你只能算是乙個工具使用者,對於安全測試你還遠遠不夠。這時候應該怎麼做呢?對於那些大量且重複性工作,盡量能用工具實現就用工具實現,然後打包成自己的工具包。...