国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python爬蟲之遍歷單個域名

2020-02-15 21:29:47
字體:
來源:轉載
供稿:網友

即使你沒聽說過“維基百科六度分隔理論”,也很可能聽過“凱文 • 貝肯 (Kevin Bacon)的六度分隔值游戲”。在這兩個游戲中,目標都是把兩 個不相干的主題(在前一種情況中是相互鏈接的維基百科詞條,而在后 一種情況中是出現在同一部電影中的演員)用一個鏈條(至多包含 6 個 主題,包括原來的兩個主題)連接起來。

比如,埃里克 • 艾德爾和布蘭登 • 弗雷澤都出現在電影《騎警杜德雷》 里,布蘭登 • 弗雷澤又和凱文 • 貝肯都出現在電影《我呼吸的空氣》 里。因此,根據這兩個條件,從埃里克 • 艾德爾到凱文 • 貝肯的鏈條 長度只有 3 個主題。

感謝 The Oracle of Bacon 的存在,滿足了我對這類關系鏈的好奇心。

我們將在本節創建一個項目來實現“維基百科六度分隔理論”的查找方 法。也就是說,我們要實現從埃里克 • 艾德爾的詞條頁面 (https://en.wikipedia.org/wiki/Eric_Idle)開始,經過最少的鏈接點擊次 數找到凱文 • 貝肯的詞條頁面(https://en.wikipedia.org/wiki/Kevin_Bacon)。

這么做對維基百科的服務器負載有多大影響?

根據維基媒體基金會(維基百科所屬的組織)的統計,該網站每秒 會收到大約2500次點擊,其中超過 99% 的點擊都指向維基百科域 名[詳情請見“維基媒體統計圖”(Wikimedia in Figures)里的“流量 數據”(Traffic Volume)部分內容]。因為網站流量很大,所以你 的網絡爬蟲不可能對維基百科的服務器負載產生顯著影響。不過, 如果你頻繁地運行本書的代碼示例,或者自己創建項目來抓取維基 百科的詞條,那么希望你能夠向維基媒體基金會提供一點捐贈—— 不只是為了抵消你占用的服務器資源,也是為了其他人能夠利用維 基百科這個教育資源。

還需要注意的是,如果你準備利用維基百科的數據做一個大型項 目,應該確認該數據是不能夠通過維基百科 API 獲取的。維基百科 網站經常被用于演示爬蟲,因為它的 HTML 結構簡單并且相對穩定。但是它的 API 往往會使得數據獲取更加高效。 你應該已經知道如何寫一段 Python 代碼,來獲取維基百科網站的任何 頁面并提取該頁面中的鏈接了。

from urllib.request import urlopen from bs4 import BeautifulSouphtml = urlopen('http://en.wikipedia.org/wiki/Kevin_Bacon') bs = BeautifulSoup(html, 'html.parser') for link in bs.find_all('a'):  if 'href' in link.attrs:    print(link.attrs['href'])

如果你觀察生成的一列鏈接,會看到你想要的所有詞條鏈接都在里 面:“Apollo 13”“Philadelphia”“Primetime Emmy Award”,等等。但是, 也有一些你不需要的鏈接:

//wikimediafoundation.org/wiki/Privacy_policy

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 抚宁县| 九江县| 重庆市| 鄢陵县| 永仁县| 阳新县| 德兴市| 杭锦后旗| 贺州市| 屯昌县| 通海县| 孟津县| 尼玛县| 大理市| 海南省| 昭觉县| 金堂县| 理塘县| 如东县| 尼玛县| 红河县| 遵义县| 西藏| 韩城市| 汝南县| 玉龙| 平乡县| 禹城市| 治多县| 南京市| 安溪县| 尤溪县| 如东县| 富裕县| 孙吴县| 古浪县| 夹江县| 喀喇沁旗| 阿勒泰市| 大冶市| 惠东县|