本篇繼續lxml.etree學習,在線訪問接口,經過接口返回的html,解析出想要的text文本內容
環境準備:
python 3.6
lxml
requetshtml
爬取個人博客首頁https://www.cnblogs.com/yoyoketang/左側欄我的基本信息
先f12抓包,找到該接口地址https://www.cnblogs.com/mvc/blog/news.aspx?blogApp=yoyoketangpython
# 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"))
運行結果mvc
<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))
運行結果:dom
['暱稱:', '園齡:', '粉絲:', '關注:'] 暱稱:上海-悠悠 園齡:1年9個月 粉絲:1123 關注:72
1.獲取當前節點標籤名稱.tag學習
print(block[0].tag)url
div
2.獲取當前節點文本3d
print(block[0].text)code
暱稱:
3.獲取當前節點元素所有屬性dictxml
print(block[0].attrib)htm
{'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