如何用bs4進行資料解析
資料解析的原理:
1.標籤定位
2.提取標籤,標籤屬性中的資料值
bs4資料解析的原理:
1.例項化乙個beautifulsoup物件,並將頁面原始碼資料載入到該物件當中
2.通過呼叫beautifulsoup物件中相關的屬性或者方法進行標籤定位和資料解析
fp =
open
('./test.html'
,'r'
,encoding=
'utf-8'
)soup=beautifulsoup(fp,
'lxml'
)
page_text=response.text
soup=beautifulsoup(page_text,
'lxml'
)
print
(soup.a)
print
(soup.find(
"a")
)都是放回第一次出現的那個標籤
soup.find_all(
)找到所有的對應的標籤
一般選擇器:
soup.select(
"選擇器(類、標籤)"
)層級選擇器:
soup.select(
"a>b>c>d")[
0] 最後一層是d,有多個d組成乙個列表,通過[i]訪問列表
soup.select[
'.a>b d'][
0]用空格表示多個層級
獲取標籤的內容
1.獲得文字內容
soup.a.text/string/get_text(
)text/get_text獲取所有的文字內容
string只可以獲取直系的文字內容,<
class
>
text<\a>
<\class
>這裡的text屬於的直系文字內容,而不屬於<
class
>直系的文字內容
2.獲取標籤中的屬性值
soup.a[
"屬性名稱"
]
接下來是爬取三國演義各個章節
import requests
from bs4 import beautifulsoup
#物件的例項化
#1.將本地的html文件載入到beautifulsoup中
if __name__ ==
'__main__'
: url=
''headers=
page_text = requests.get(url=url,headers=headers)
.text
#例項化乙個beautifulsoup
soup= beautifulsoup(page_text,
'lxml'
)#解析章節標題和詳情頁的url
li_list=soup.select(
'.book-mulu > ul >li'
) fp=
open
('./sanguo.txt'
,'w'
,encoding=
'utf-8'
)for li in li_list:
title=li.a.string
detail_url=
''+li.a[
'href'
] detail_page_text=requests.get(url=detail_url,headers=headers)
.text
detail_soup=beautifulsoup(detail_page_text,
'lxml'
) div_tag=detail_soup.find(
'div'
,class_=
'chapter_content'
) content=div_tag.text
fp.write(title+
':'+content+
'\n'
)print
(title,
'爬取成功'
)
ObjC第四節 繼承
繼 承 1 繼承 1.1 nsobject,根類,oc建立的類都繼承自根類,位於類層次結構的頂層,沒有父類 1.2 父類的例項變數和方法都可以被隱式的繼承過來成為子類的一部分,子類就可以直接訪問這些例項變數和方法 1.3 alloc和init是繼承自nsobject的方法 1.4 繼承的概念呈單鏈繼...
第四節 條件語句
if語句 if v 100else if v 50elseif語句不需要括號 用法高階 const filename abc.txt if contents,error ioutil.readfile filename error nilelse注意 contents和error變數都是在if 塊中...
Python基礎第四節
字典是 鍵值對 的無序可變序列,其中每個元素都是乙個 鍵值對 包含 鍵物件 和 值物件 就像可通過列表元素索引值獲取對應物件,我們可通過 鍵物件 獲取 刪除 更新其對應的值物件。鍵必須是不可變資料,如整數 浮點數 字串 元組,不能是字典 列表 集合等可變物件,鍵不可重複。若重複出現鍵,則後面的覆蓋前...