Python網路資料採集 第二章

2021-09-29 08:18:59 字數 2073 閱讀 7754

from urllib.request import urlopen

from bs4 import beautifulsoup

##2.1

#我們可以抓出整個頁面,然後建立乙個beautifulsoup 物件

html = urlopen("")

bsopj = beautifulsoup(html)

#2.2.1

## 查詢

namelist = bsopj.find_all("span", )

namelist1 = bsopj.find_all(text="the prince")

# for name in namelist:

# print(name.get_text())

#print(len(namelist1))

#.get_text() 會把你正在處理的 html 文件中所有的標籤都清除,然後返回乙個只包含文字的字串。 假如你正在處理乙個包含許多超連結、段落和標籤的大段源**, 那麼 .get_text() 會把這些超連結、段落和標籤都清除掉,只剩下一串不帶標籤的文字。

#用 beautifulsoup 物件查詢你想要的資訊,比直接在 html 文字裡查詢資訊要簡單得多。 通常在你準備列印、儲存和運算元據時,應該最後才使用 .get_text()。一般情況下,你應該盡可能地保留 html 文件的標籤結構。

#alltxt = bsopj.find_all(id = "text")

#alltxt = bsopj.find_all("",)#這倆其實一樣的

#print(alltxt)

#2.2.2其他beautifulsoup物件

#•beautifulsoup 物件

#前面**示例中的 bsobj

#• 標籤 tag 物件

# beautifulsoup 物件通過 find 和 findall,或者直接呼叫子標籤獲取的一列物件或單個

# 物件,就像:bsobj.div.h1

#•其他不常用

#2.2.3導航樹

#1.處理子標籤和其他後代標籤??????????其實不太懂

html = urlopen("")

bsobj = beautifulsoup(html)

# for child in bsobj.find("table",).children:

# print(child)

#2.處理兄弟標籤

#next_siblings() 函式可以讓收集**資料成為簡單的事情,尤其是處理帶標題行的**

# for sibling in bsobj.find("table",).tr.next_siblings:

# print(sibling)

#兄弟節點可以理解為和本節點處在統一級的節點,.next_sibling 屬性獲取了該節點的下乙個兄弟節點,.previous_sibling 則與之相反,如果節點不存在,則返回 none

#3.父標籤處理

#較為少用

#print(bsobj.find("img",).parent.previous_sibling.get_text())

#2.3正規表示式

#2.4正規表示式和beautifulsoup

import re

images = bsobj.find("img",)

# for image in images:

# print(image["src"])

#2.5獲取屬性

#print(images.attrs["src"])

#2.6lambda表示式

# beautifulsoup 用這個函式來評估它遇到的每個標籤物件,最後把評估結果為「真」的標籤保留,把其他標籤剔除。

#下面的**就是獲取有兩個屬性的標籤:

print(bsobj.findall(lambda tag: len(tag.attrs) == 2))

#2.7超越beautifulsoup

# beautifulsoup是 python 裡最受歡迎的 html 解析庫之一,但是除了lxml、html parser也可以

第二章 網路應用

第二章 網路應用 1.網路應用體系結構 識記網路應用特性結構與分類 客戶 伺服器 c s 結構 純p2p結構 混合結構 領會c s網路應用 p2p網路應用以及混合網路應用的特點 區別與聯絡 c s最主要的特徵是通訊只在客戶與伺服器之間進行,客戶與客戶之間不進行直接通訊 p2p結構可以動態地直接與其他...

python第二章上機實踐 演算法第二章上機實踐報告

1.實踐題目名稱 找第k小的數 2.問題描述 在n 1 n 1000 個無序的整數中找出第k小的數,且時間複雜度為o n 3.演算法描述 int partition int a,int left,int right 函式功能 將輸入的陣列進行排序,排序後的陣列需要滿足 基準左邊的數都小於基準,基準右...

python第二章上機實踐 第二章上機實踐報告

設計乙個平均時間為o n 的演算法,在n 1 n 1000 個無序的整數中找出第k小的數。輸入格式 輸入有兩行 第一行是n和k,0 第二行是n個整數 輸出格式 輸出第k小的數 輸入樣例 在這裡給出一組輸入。例如 10 4 2 8 9 0 1 3 6 7 8 2 輸出樣例 在這裡給出相應的輸出。例如 ...