python筆記28-lxml.etree爬取html內容


前言

本篇繼續lxml.etree學習,在線訪問接口,通過接口返回的html,解析出想要的text文本內容
環境准備:
python 3.6
lxml
requets

定位目標

爬取我的博客首頁https://www.cnblogs.com/yoyoketang/左側欄個人基本信息
先f12抓包,找到該接口地址https://www.cnblogs.com/mvc/blog/news.aspx?blogApp=yoyoketang

# coding:utf-8
import requests
import urllib3
from lxml import etree
urllib3.disable_warnings()

url = "https://www.cnblogs.com/mvc/blog/news.aspx?blogApp=yoyoketang"
r = requests.get(url, verify=False)
# print(r.text)

dom = etree.HTML(r.content.decode("utf-8"))

block = dom.xpath("//*[@id='profile_block']")

# 打印提取到的結果
t = etree.tostring(block[0], encoding="utf-8", pretty_print=True)
print(t.decode("utf-8"))

運行結果

<div id="profile_block">昵稱:<a href="https://home.cnblogs.com/u/yoyoketang/">上海-悠悠</a><br/>園齡:<a href="https://home.cnblogs.com/u/yoyoketang/" title="入園時間:2016-11-26">1年9個月</a><br/>粉絲:<a href="https://home.cnblogs.com/u/yoyoketang/followers/">1123</a><br/>關注:<a href="https://home.cnblogs.com/u/yoyoketang/followees/">72</a><div id="p_b_follow"/><script>getFollowStatus('95cb2f22-a6b3-e611-845c-ac853d9f53ac')</script></div>

提取內容

# coding:utf-8
import requests
import urllib3
from lxml import etree
urllib3.disable_warnings()

url = "https://www.cnblogs.com/mvc/blog/news.aspx?blogApp=yoyoketang"
r = requests.get(url, verify=False)
# print(r.text)

dom = etree.HTML(r.content.decode("utf-8"))

block = dom.xpath("//*[@id='profile_block']")


t1 = block[0].xpath('text()')    # 獲取當前節點文本元素
print(t1)
t2 = block[0].xpath('a')    # 定位a標簽

# 打印結果
for i, j in zip(t1, t2):
    print("%s%s" % (i, j.text))

運行結果:

['昵稱:', '園齡:', '粉絲:', '關注:']
昵稱:上海-悠悠
園齡:1年9個月
粉絲:1123
關注:72

總結

1.獲取當前節點標簽名稱.tag

print(block[0].tag)

div

2.獲取當前節點文本

print(block[0].text)

昵稱:

3.獲取當前節點元素全部屬性dict

print(block[0].attrib)

{'id': 'profile_block'}

4.獲取當前節點某個屬性

print(block[0].get("id"))

profile_block

5.所有子節點

for i in block[0].iter():
   print(i.text)
profile_block
昵稱:
上海-悠悠
None
1年9個月
None
1123
None
72
None
getFollowStatus('95cb2f22-a6b3-e611-845c-ac853d9f53ac')

6.獲取當前節點下全部文本

print(block[0].xpath('text()'))

['昵稱:', '園齡:', '粉絲:', '關注:']

7.獲取本節點和子節點所有文本信息

print(block[0].xpath('.//text()'))

['昵稱:', '上海-悠悠', '園齡:', '1年9個月', '粉絲:', '1123', '關注:', '72', "getFollowStatus('95cb2f22-a6b3-e611-845c-ac853d9f53ac')"]

8.獲取父節點

print(block[0].getparent().tag)

body

作者:上海-悠悠 python自動化交流 QQ群:779429633


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM