尚硅谷爬虫(解析_xpath的基本使用)笔记

这篇具有很好参考价值的文章主要介绍了尚硅谷爬虫(解析_xpath的基本使用)笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、xpath的基本使用

创建一个简单的HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
 <ul>
     <li>北京</li>
     <li>上海</li>
     <li>深圳</li>
     <li>武汉</li>
 </ul>
<ul>
    <li>大连</li>
    <li>锦州</li>
    <li>沈阳</li>
</ul>
</body>
</html>

创建一个python文件:

如果解析本地文件使用etree.parse

如果解析服务器响应文件使用etree.HTML()

from lxml import etree
# xpath解析
# (1)本地文件                                                      etree.parse
# (2)服务器的响应数据 response.read().decode('utf-8')******* 应用较多 etree.HTML()

tree=etree.parse('shangguigu.html')
print(tree)



运行:

尚硅谷爬虫(解析_xpath的基本使用)笔记

 会报错

lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: meta line 4 and head, line 6, column 8

原因是 xpath 严格遵守HTML规范  

解决方法:

在meta标签中加入

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
 <ul>
     <li>北京</li>
     <li>上海</li>
     <li>深圳</li>
     <li>武汉</li>
 </ul>
<ul>
    <li>大连</li>
    <li>锦州</li>
    <li>沈阳</li>
</ul>
</body>
</html>

再次运行:

尚硅谷爬虫(解析_xpath的基本使用)笔记

xpath基本语法:

1. 路径查询
// :查找所有子孙节点,不考虑层级关系
/ :找直接子节点
2. 谓词查询
//div[@id]
//div[@id="maincontent"]
3. 属性查询
//@class
4. 模糊查询
//div[contains(@id, "he")]
//div[starts‐with(@id, "he")]
5. 内容查询
//div/h1/text()
6. 逻辑运算
//div[@id="head" and @class="s_down"]
//title | //price

# 查找ul下面的li

from lxml import etree
# xpath解析
# (1)本地文件                                                      etree.parse
# (2)服务器的响应数据 response.read().decode('utf-8')******* 应用较多 etree.HTML()

tree=etree.parse('shangguigu.html')
print(tree)

# tree.xpath('xpath路径')

# 查找ul下面的li
li_list=tree.xpath('//body/ul/li')
# 判断列表的长度
print(li_list)
print(len(li_list))

尚硅谷爬虫(解析_xpath的基本使用)笔记

# 查早所有id的属性的li标签

HTML中添加分别在北京和上海中添加 id='1'  id='2'

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
 <ul>
     <li id="1">北京</li>
     <li id="2">上海</li>
     <li>深圳</li>
     <li>武汉</li>
 </ul>
<!--<ul>-->
<!--    <li>大连</li>-->
<!--    <li>锦州</li>-->
<!--    <li>沈阳</li>-->
<!--</ul>-->
</body>
</html>
from lxml import etree
# xpath解析
# (1)本地文件                                                      etree.parse
# (2)服务器的响应数据 response.read().decode('utf-8')******* 应用较多 etree.HTML()

tree=etree.parse('shangguigu.html')
print(tree)

# tree.xpath('xpath路径')

# # 查找ul下面的li
# li_list=tree.xpath('//body/ul/li')
# # 判断列表的长度
# print(li_list)
# print(len(li_list))

# 查早所有id的属性的li标签
li_list=tree.xpath('//ul/li[@id]')
print(li_list)
print(len(li_list))

尚硅谷爬虫(解析_xpath的基本使用)笔记

# text()获取标签中的内容

from lxml import etree
# xpath解析
# (1)本地文件                                                      etree.parse
# (2)服务器的响应数据 response.read().decode('utf-8')******* 应用较多 etree.HTML()

tree=etree.parse('shangguigu.html')
print(tree)

# tree.xpath('xpath路径')

# # 查找ul下面的li
# li_list=tree.xpath('//body/ul/li')
# # 判断列表的长度
# print(li_list)
# print(len(li_list))

# 查早所有id的属性的li标签
# text()获取标签中的内容
li_list=tree.xpath('//ul/li[@id]/text()')
print(li_list)
print(len(li_list))

尚硅谷爬虫(解析_xpath的基本使用)笔记

# 找到id为l1的标签

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
 <ul>
     <li id="l1">北京</li>
     <li id="2">上海</li>
     <li>深圳</li>
     <li>武汉</li>
 </ul>
<!--<ul>-->
<!--    <li>大连</li>-->
<!--    <li>锦州</li>-->
<!--    <li>沈阳</li>-->
<!--</ul>-->
</body>
</html>

Python:

from lxml import etree
# xpath解析
# (1)本地文件                                                      etree.parse
# (2)服务器的响应数据 response.read().decode('utf-8')******* 应用较多 etree.HTML()

tree=etree.parse('shangguigu.html')
print(tree)

# tree.xpath('xpath路径')

# # 查找ul下面的li
# li_list=tree.xpath('//body/ul/li')
# # 判断列表的长度
# print(li_list)
# print(len(li_list))

# 查早所有id的属性的li标签
# text()获取标签中的内容
# li_list=tree.xpath('//ul/li[@id]/text()')

# 找到id为l1的标签
li_list=tree.xpath('//ul/li[@id="l1"]/text()')
print(li_list)
print(len(li_list))

尚硅谷爬虫(解析_xpath的基本使用)笔记

 HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
 <ul>
     <li id="l1" class="c1">北京</li>
     <li id="2">上海</li>
     <li>深圳</li>
     <li>武汉</li>
 </ul>
<!--<ul>-->
<!--    <li>大连</li>-->
<!--    <li>锦州</li>-->
<!--    <li>沈阳</li>-->
<!--</ul>-->
</body>
</html>

Python:

from lxml import etree
# xpath解析
# (1)本地文件                                                      etree.parse
# (2)服务器的响应数据 response.read().decode('utf-8')******* 应用较多 etree.HTML()

tree=etree.parse('shangguigu.html')
print(tree)

# tree.xpath('xpath路径')

# # 查找ul下面的li
# li_list=tree.xpath('//body/ul/li')
# # 判断列表的长度
# print(li_list)
# print(len(li_list))

# 查早所有id的属性的li标签
# text()获取标签中的内容
# li_list=tree.xpath('//ul/li[@id]/text()')

# 找到id为l1的标签
# li_list=tree.xpath('//ul/li[@id="l1"]/text()')

# 查找到id为l1的li标签的class的属性值
li_list=tree.xpath('//ul/li[@id="l1"]/@class')
print(li_list)
print(len(li_list))

尚硅谷爬虫(解析_xpath的基本使用)笔记

 2、获取百度网站的百度一下

定位:

右键——检查——点击左上角小箭头——点击百度一下  即可快速定位 

尚硅谷爬虫(解析_xpath的基本使用)笔记

右键定位后的代码——Copy——Copy xPath  

尚硅谷爬虫(解析_xpath的基本使用)笔记

# 1 获取网页源码
# 2 解析 解析的服务器响应的文件 etree.HTML
# 3 打印

import urllib.request

url='https://www.baidu.com/'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
}

# 请求对象的定制
request =urllib.request.Request(url=url,headers=headers)

#模拟浏览器访问服务器
response =urllib.request.urlopen(request)

#获取网页源码
content=response.read().decode('utf-8')

# print(content)
# 解析网页源码 来获取我们想要的数据
from lxml import etree

#解析服务器响应的文件
tree=etree.HTML(content)

# 获取想要的数据 xpath默认返回一个列表
result=tree.xpath('//input[@id="su"]/@value')[0]

print(result)

尚硅谷爬虫(解析_xpath的基本使用)笔记文章来源地址https://www.toymoban.com/news/detail-420437.html

到了这里,关于尚硅谷爬虫(解析_xpath的基本使用)笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python爬虫数据解析xpath

    下载地址:百度网盘 请输入提取码 第一步: 下载好文件后会得到一个没有扩展名的文件,重命名该文件将其改为.rar或者.zip等压缩文件,解压之后会得到一个.crx文件和一个.pem文件。新建一个文件夹,将这两个文件放在该文件夹(本人将其命名为xpath-helper)内。 第二步: 将

    2024年02月10日
    浏览(40)
  • python爬虫数据解析xpath、jsonpath,bs4

    解析数据的方式大概有三种 xpath JsonPath BeautifulSoup 打开谷歌浏览器扩展程序,打开开发者模式,拖入插件,重启浏览器,ctrl+shift+x,打开插件页面 安装在python环境中的Scripts下边,这里就是python库的位置,例如我的地址为:E:pythonpython3.10.11Scripts 解析本地文件etree.parse( \\\'xx.

    2024年02月13日
    浏览(46)
  • Python爬虫技术系列-02HTML解析-xpath与lxml

    参考连接: XPath教程 https://www.w3school.com.cn/xpath/index.asp lxml文档 https://lxml.de/index.html#support-the-project 爬虫专栏 https://blog.csdn.net/m0_38139250/category_12001010.html XPath的中文名称为XML路径语言(XML Path Language),其最初的设计是用来搜索 XML 文档,但也适用于HTML文档搜索。1996年11月,

    2024年02月07日
    浏览(45)
  • python spider 爬虫 之 解析 xpath 、jsonpath、BeautifulSoup (三)

    简称:bs4 BeautifulSoup跟lxml 一样,是一个html文档的解析器,主要功能也是解析和提取数据 优缺点 缺点:效率没有lxml的效率高 优点:接口接口人性化,使用方便 延用了css选择器 安装BeautifulSoup 1、安装:pip install bs4 2、导入:from bs4 import BeautifulSoup 3、创建bs4 对象 ① 服务器响

    2024年02月11日
    浏览(61)
  • Python网页爬虫爬取豆瓣Top250电影数据——Xpath数据解析

    1.1 查看原页面信息 首先打开豆瓣Top250电影页面,其网址是:https://movie.douban.com/top250。 可以发现,该页面展示的电影信息有中英文电影名、导演、主演、上映年份、国籍、电影类型、评分等。 下滑到页面底部,发现第一页有25部电影的数据,并且可以点击页码数实现页面跳转

    2024年02月05日
    浏览(54)
  • 爬虫之xpath插件下载与使用

    国内下载地址:https://chrome.zzzmh.cn/info?token=hgimnogjllphhhkhlmebbmlgjoejdpjl

    2024年02月06日
    浏览(54)
  • 网络爬虫(二)——Xpath和Selenium的使用

    虽然正则表达式处理字符串的能力很强,但是在编写正则表达式的时候代码还是比较麻烦的,如果不小心写错一处,那么将无法匹配页面中所需要的数据,因为网页中包含大量的节点,而节点中又包含id、class等属性。如果在解析页面中的数据时,通过Xpath来定位网页中的数据

    2024年02月03日
    浏览(44)
  • 【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片

    个人主页 :为梦而生~ 关注我一起学习吧! 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 往期推荐 : 【Python爬虫开发基础⑦】urllib库的基本使用 【Python爬虫开发基础⑧】XPath库及其基本用法 我们在之前已经有8篇文章讲述基础知识了,下面我们

    2024年02月11日
    浏览(74)
  • [ tool ] Xpath选择器和selenium工具基本使用

    是一门在XML文档中查找信息的语言 以后查找标签有三种方式 bs4的find系列(find find_all) css选择器 xpath选择器 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如

    2024年01月21日
    浏览(37)
  • Python使用XPath解析HTML:从入门到精通

    XPath是一种用于选择XML文档中节点的语言,它可以通过路径表达式来定位节点。由于HTML文档的结构与XML文档类似,XPath也可以用于解析HTML文档。Python是一种非常流行的编程语言,它提供了许多库用于解析HTML文档。本文将介绍Python中使用XPath解析HTML文档的方法和技巧。 XPath表达

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包