資料解析 bs進行資料解析

2022-07-12 17:36:30 字數 2471 閱讀 2990

1、bs4進行資料解析

資料解析的原理

1、標籤定位

2、提取標籤,標籤屬性中儲存的資料值

bs4資料解析的原理

1、例項化乙個beautifulsoup物件,並且將頁面原始碼資料載入到該物件中

2、通過呼叫beautifulsoup物件中相關的屬性或者方法進行標籤的定位和資料的提取

2、環境安裝

-- pip install  bs4

-- pip install  lxml

3、基本知識

1、例項化beautifulsoup物件:

from bs4 import beautifulsoup

例項化:1、將本地的html文件中的資料載入到該物件中

fp = open('

./test.html

','r

',encoding='

utf-8')

#將本地的html文件中的資料載入到改物件中

soup = beautifulsoup(fp,"

lxml")

print(soup)

2、將網際網路上獲取的頁面原始碼載入到改物件中(常用)

page_text =response.text

soup = beautifulsoup(page_text,'

lxml

')

2、beautiful提供的屬性和方法

1、soup.tagname   例如:soup.a   就是獲取第乙個a標籤

2、find()

soup.find('tagname')    如 soup.find('div')

返回的也是第乙個div,和前面是等價的

soup.find('div',class_/id/attr='song')

soup.find_all()   返回多個資料  find_all('tagname') 返回的是乙個列表

3、select()  最好用

select('某種選擇器')  可以是id、類、標籤選擇器  返回乙個列表  soup.select('.tang') 

soup.select('.tang >ul >li > a')[0]

soup.select('.tang >ul >li  a')[0]

4、獲取標籤之間的文字資料    soup.a.text   soup.a.string    soup.a.get_text()

區別:text/get_text()   可以獲取標籤之間的所有文字內容,可以是後代

string只可以獲取標籤的子元素內容

5、獲取標籤的屬性值

soup.a['href']

4、實戰

from bs4 import

beautifulsoup

import

requests

if__name__ == "

__main__":

#爬取三國演義**的所有章節和內容

url = "

"headers =

#1、對首頁的資料進行爬取

page_text = requests.get(url = url,headers=headers).text

#2、在首頁中解析出章節的標題和詳情頁的url

#1、例項化beautifulsoup物件

soup = beautifulsoup(page_text,'

lxml')

#2、解析章節標題

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,'

爬取成功

')

爬蟲 資料解析 bs4

正規表示式實現資料解析 需求 爬取糗事百科中糗圖資料 import requests headers 方式1 url img data requests.get url url,headers headers content content返回的是byte型別的資料 方式2 方式2不可以使用ua偽裝...

jq進行json資料解析

jq進行json資料解析 學習了 幫助文件 使用man可以檢視詳細幫助,太強大了 yiqing cat a.json jq b0 a獲取多個屬性,逗號分隔,可以列出不包含的 yiqing cat a.json jq all a0,b0,c0 b可以直接按照資料來進行過濾 yiqing cat a.j...

python爬蟲資料解析之bs4

步驟 1 匯入bs4庫 from bs4 import beautifulsoup2 獲取soup物件 html為你獲取的網頁源 將html轉化為特定的格式lxml 為後面提取資訊做準備 soup beautifulsoup html,lxml 3 利用方法選擇器解析 find all 查詢所有符合...