在爬取網頁後,通常需要將爬取到的內容進行分割提取,拿到我們想要的文字內容或者相應的位址url。
安裝bs4模組,並匯入
from bs4 import beautifulsoup
fp =
open
('/.test.html'
,'r'
,encoding=
'utf-8'
)#將本地的html文件中的資料記載到該物件中
soup =beautifulsoup(fp,
'lxml'
)print
(soup.a)
# 結果拿到a標籤內容 soup.tagname 返回的是html中第一次出現的tagname標籤
print
(soup.div)
#拿到第乙個div標籤
print
(soup.find(
'div'))
#相當於soup.div
print
(soup.find(
'div'
,class_=
'***'))
#定位class=***的div標籤
print
(soup.find_all(
'a')
)# 返回所有的a標籤
#返回的是乙個列表 select('某種選擇器(id ,class,標籤..選擇器)')
#層級選擇器
print
(soup.select(
'.tang>ul>li>a')[
0])# tang下面的ul下面的li標籤下面的a標籤的第乙個
print
(soup.select(
'.tang>ul> a')[
0])# 空格表示多個層級 直接難道a標籤
#獲取標籤中的文字資料soup.a.text/string/get_text()
print
(soup.select(
'.tang>ul> a')[
0].text)
print
(soup.select(
'.tang>ul> a')[
0].string)
#只獲取直系
print
(soup.select(
'.tang>ul> a')[
0].get_text())
# text/get_text獲取標籤中所有的文字內容 (即使不是直系)
#獲取標籤屬性
print
(soup.select(
'.tang>ul> a')[
0]['href'])
#獲取href值
xpath解析
1 例項化乙個etree物件,且需要將被解析的頁面原始碼資料載入到該物件中
2 呼叫etree物件中的xpath表示式實現標籤的定位和內容的捕獲
pip install lxml
from lxml import etree
1 將本地的html文件中的原始碼資料載入到etree中
etree.parse(filepath)
2可以將網際網路上獲取的原始碼資料載入到該物件中
etree.html(『page_text』)
xpath(『xpath表示式』)
from lxml import etree
tree=etree.parse(
'test.html'
)#最左側/表示從根節點開始
print
(tree.xpath(
'/html/head/title'))
# 列表儲存物件對應於title標籤的文字內容
r=tree.xpath(
'/html/body/div'
)#假如檔案中有三組div,則列表中有三個物件
r1=tree.xpath(
'/html//div'
)#//表示多個層級
r2 = tree.xpath(
'//div'
)#//表示從任意位置開始定位
r3 = tree.xpath(
'//div[@class="song"]'
)# 屬性為song的div
r4 = tree.xpath(
'//div[@class="song"]/p[3]'
)# 屬性為song的div下的第三個p標籤
r5 = tree.xpath(
'//div[@class="tang"]//li[5]/a/text()'
)#第五個li標籤下的a標籤的文字 列表形式
r6= tree.xpath(
'//div[@class="tang"]//li[5]/a/text()')[
0]#第五個li標籤下的a標籤的文字 文字
r7 = tree.xpath(
'//div[@class="tang"]//li[5]//text()'
)#非直系文字內容
r8 = tree.xpath(
'//div[@class="song"]/img/@src'
)#img標籤下的位址thon
import requests
from lxml import etree
headers=
url=
''page_text=requests.get(url=url,headers=headers)
.text
print
(page_text)
tree=etree.html(page_text)
li_list=tree.xpath(
'//div[@main-content-wrap]//div[@rank-body]//div[@book-img-text]/ul/li'
)fp=
open
('qidian.txt'
,'w'
,encoding=
'utf-8'
)for li in li_list:
title=li.xpath(
'./div[2]/h4/a/text()'
)print
(title)
fp.write(title+
'\n'
)
爬蟲架構 bs4
方便解析html xml等格式的原始碼,快速查詢 修改等操作,節省數小時乃至更多的工作時間 官網文件 from bs4 import beautifulsoup print path beautifulsoup path 非真實網頁 html doc 夏日炎炎,要你幹嘛 print soup.hea...
爬蟲 bs4模組
安裝 pip3 install beautifulsoup4 解析html和xml,修改html和xmlimport requests from bs4 import beautifulsoup 文件容錯能力,不是乙個標準的html也能解析 soup beautifulsoup html doc,l...
Python爬蟲 bs4 xpath基本語法
標籤定位 提取標籤 標籤屬性中儲存的資料值 例項化乙個beautifulsoup物件,並且將頁面原始碼資料載入到該物件中 通過呼叫beautifulsoup物件中相關的屬性或者方法進行標籤定位和資料提取 環境安裝 pip install bs4 pip install lxml如何例項化beauti...