当前位置: 代码迷 >> 综合 >> 网络爬虫,xpath
  详细解决方案

网络爬虫,xpath

热度:84   发布时间:2023-12-02 04:35:54.0
#导入lxml包下的etree类
from lxml import etree#随意定义一段html代码块
s="""<div><ul><li class="item-0"><a href="link1.html">aaa</a></li><li class="item-0"><a href="link2.html">bbb</a></li><li class="item-0"><a href="link3.html">ccc</a></li></ul></div>
"""#将字符串转换为html网页(编号)
html=etree.HTML(s)
print(html)print("-"*80)#将html网页转换为字符串
#与直接输出不同,这里会加上html,body标签。
html_string=etree.tostring(html)
#输出并设置编码格式为utf-8(兼容中文)
print(html_string.decode("utf-8"))print("-"*80)#匹配a标签1(多个结果就用列表循环输出)
#加 / 得一层一层往下找
html_data1=html.xpath("/html/body/div/ul/li/a")
for i in html_data1:print(i)print(i.text)  # 输出a标签的内容print("-"*80)#匹配a标签2
#加 // 就可以省略前面在多级
html_data2=html.xpath("//div")
for i in html_data2:# 加 @href 就是获取a标签里href的内容#. 暂时不知道什么意思res = i.xpath("./ul/li/a/@href")print(res)# for j in res:#     print(j)print("-"*80)#匹配谓语(获取指定相同标签的其中一个,[]下标从1开始)
html_data3=html.xpath("//li[2]/a")
print(html_data3)
print(html_data3[0].text) #输出内容