栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

2021-09-28

Python 更新时间:发布时间: 百科书网 趣学号
Spider-2.XPath

文章目录
  • Spider-2.XPath
  • 前言
  • 一、XPath是什么?
  • 二、学习
    • 1.语法
    • 2.案例
  • 总结


前言

全称 XML Path Language

,,,日后还要补充


一、XPath是什么?

最初是⽤来搜寻 XML ⽂档的,但同样适⽤于 HTML ⽂档的搜索。所以在做爬⾍时完全可以使⽤ XPath做相应的信息抽取。

二、学习 1.语法

代码如下(示例):

#字符串转化为etree._Element对象,然后具有Xpath方法
#from lxml import etree
#res = requests.get('https://www.baidu.com')
#res.encoding=res.apparent_encoding
#html = res.text
# doc = etree.HTML(html)
doc = etree.parse("tex.html")
print(doc.xpath("//title/text()"))
print(doc.xpath('//a[@id="link1"]/@title'))

# '''通过 属性 选取元素的属性值'''
print(doc.xpath('//input[@id="su"][@type="submit"]/@value'))

# '''通过 层级 定位元素'''
print(doc.xpath('//div[@id="u1"]/a/text()'))
#>>> ['新闻', 'hao123', '地图', '视频', '贴吧', '更多产品']

# '''xpath方法返回的结果是列表,可以通过列表 ‘索引’ 提取数据'''
link5 = doc.xpath('//div[@id="uu"]/p/a[last()-1]/text()')[0]
print(link5)


2.案例
import requests
from lxml import etree
url = 'http://www.cntour.cn/'
strhtml = requests.get(url) # get方式,获取网页数据
# 指定lxml解析器,将HTML文档转换成树形结构
#soup = BeautifulSoup(strhtml.text,'lxml')
html=etree.HTML(strhtml.text)
ul=html.xpath("//ul[@class='newsList']")[0]
#print(ul)
lis=ul.xpath("./li//a[@target='_blank']")
print(lis)
#news=[]
for li in lis:
    print(li.xpath("@title"))
    print(li.xpath("@title")[0])
    title=li.xpath("@title")[0]
    href=li.xpath("@href")[0]
    new={"title":title,
         "href":href
        }

# soup匹配到的有多个数据,用for循环取出
# for item in data:
#     result = {
#         'title': item.get_text(), # 标题
#         'link': item.get('href'), # 超链接
#         #'ID': re.findall('d+', item.get('href'))
#     }
#     print(result)

该处使用的url网络请求的数据。


总结

路漫漫何其远兮!!

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/273373.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号