處理HTML頁面,經常使用的便是使用beautifulsoup庫
pip install beautifulsoup4
執行上述語句下載bs4庫
一般請求下來的所需數據都位於tbody的tr標簽里,下面給出對應代碼:
soup = BeautifulSoup(r.text, "html.parser") informationlist = [] for tr in soup.find('tbody').children: #出現/n情況,/n在soup中被認為是子節點之一 if(tr!='\n'): tds = tr('td') informationlist.append([tds[0].string, tds[1].string, tds[8].string]) for i in range(len(informationlist)): information = informationlist[i] print("{:^10}\t{:^6}\t{:^10}".format(information[0], information[1], information[2]))
Tag:標簽,最基本的信息組織單元,分別用<>和</>標明開頭和結尾
Name:標簽的名字,<p>…</p>的名字是'p',格式:<tag>.name
Attributes:標簽的屬性,字典形式組織,格式:<tag>.attrs
NavigableString:標簽內非屬性字符串,<>…</>中字符串,格式:<tag>.string
Comment:標簽內字符串的注釋部分,一種特殊的Comment類型
遍歷方法:
for child in soup.body.children: print(child) for child in soup.body.descendants: print(child)
下面給出一些常用的屬性
.contents:子節點的列表,將<tag>所有兒子節點存入列表
.children:子節點的迭代類型,與.contents類似,用於循環遍歷兒子節點
.descendants:子孫節點的迭代類型,包含所有子孫節點,用於循環遍歷
.parent:節點的父親標簽
.parents:節點先輩標簽的迭代類型,用於循環遍歷先輩節點
.next_sibling:返回按照HTML文本順序的下一個平行節點標簽
.previous_sibling:返回按照HTML文本順序的上一個平行節點標簽
.next_siblings:迭代類型,返回按照HTML文本順序的后續所有平行節點標簽
.previous_siblings:迭代類型,返回按照HTML文本順序的前續所有平行節點標簽