python網路爬蟲 通過網際網路採集

2021-08-08 10:44:15 字數 2893 閱讀 9163

在你寫爬蟲隨意跟隨外鏈跳轉之前,請問自己幾個問題:

(1)我們要收集哪些資料?這些資料可以通過採集幾個已經確定的**(永遠是最簡單的做法)完成嗎?或者我的爬蟲需要發現那些我可能不知道的**。

(3)如果我的網路爬蟲引起了某個**網管的懷疑,我如何避免法律責任?

幾個靈活的python函式組合起來就可以實現不同型別的網路爬蟲。用不超過50行**就可以輕鬆寫出來:

from urllib.request import urlopen

from bs4 import beautifulsoup

import re

import datetime

import random

pages=set()

random.seed(datetime.datetime.now())

#獲取頁面所有內鏈的列表

def getinternallinks(bsobj,includeurl):

internallinks=

#找出所有以「/」開頭的鏈結

for link in bsobj.findall("a",href=re.compile("^(/|.*"+includeurl+")")):

if link.attrs['href'] is not none:

if link.attrs['href'] not in internallinks:

return internallinks

#獲取頁面所有外鏈的列表

def getexternallinks(bsobj,excludeurl):

externallinks=

#找出所有以「/」開頭的鏈結

print("隨機外鏈是:"+externallink)

followexternalonly(externallink)

followexternalonly("")

**首頁上並不能保證一直能發現外鏈,這是為了能夠發現外鏈,就需要一種類似前面案例中使用的採集方法,即遞迴地深入乙個**直到找到乙個外鏈才停止。下圖是從網際網路上不同的**採集外鏈的程式流程圖

把任務分解為像「獲取頁面上所有外鏈「這樣的小函式是不錯的做法,以後可以方便地修改**以滿足另乙個採集任務的需求。例如,如果我們的目標是採集乙個**所有的外鏈,並且記錄每乙個外鏈,我們可以增加下面的函式:

#收集**上發現的所有外鏈列表

allextlinks=set()

allintlinks=set()

def getallexternallinks(siteurl):

html=urlopen(siteurl)

bsobj=beautifulsoup(html,"html.parser")

internallinks=getinternallinks(bsobj,splitaddress(siteurl)[0])

externallinks=getexternallinks(bsobj,splitaddress(siteurl)[0])

for link in externallinks:

allextlinks.add(link)

print(link)

for link in internallinks:

if link not in allintlinks:

print("即將獲取連線的url是"+link)

allintlinks.add(link)

getexternallinks(link)

getallexternallinks("")

這段程式可以看做兩個迴圈--乙個收集內鏈,乙個是收集外鏈--然後彼此連線起來工作,程式流程圖如下:

mysql 網際網路 MySQL網際網路業務使用建議

一 基礎規範 表儲存引擎必須使用innodb 表字符集預設使用utf8,必要時候使用utf8mb4 解讀 1 通用,無亂碼風險,漢字3位元組,英文1位元組 2 utf8mb4是utf8的超集,有儲存4位元組例如表情符號時,使用它 禁止使用儲存過程,檢視,觸發器,event 解讀 1 對資料庫效能影響...

網際網路與網際網路的區別

網際網路的英文單詞是 internet,網際網路的英文單詞是 internet。在英語中,專有名詞首字母都是大寫,用於特指某一事物。大寫的 internet 是作為乙個專有名詞出現的,所指的是由阿帕網發展而來的現如今全球最大的計算機網路,稱之為網際網路。小寫 internet 是作為乙個普通單詞出現...

網際網路之父Vint Cerf 網際網路的下乙個十年

據國外 報道,谷歌在自己的官方部落格上發表了對網際網路未來發展的觀點。在採訪了10位頂級電腦專家後,google首席網際網路顧問 有網際網路之父美譽的 vint cerf發表文章認為,10年來網際網路的發展對人們的生活產生了巨大影響,改變了政治 娛樂 文化 商業 醫療 環境和所有能想到的東西。未來網...