lxml的使用(节点与xpath爬取数据)
lxml安装
lxml是python下功能很丰富的XML和HTML解析库,性能非常的好,是对libxml3和libxlst的封装。在Windows下载这个库直接使用 pip install lxml 即可。CentOS下载可使用以下命令。
yum install libxml3-devel libxslt-devel pip install lxml
lxml构建HTM
在lxml下,很大程度上运用了DOM树的概念,他能够结合XPath很方便的获取到我们想要的数据。
在lxml中,我们必须学会一些最基本的使用方法,首先是他提供的etree。
下面代码提供了使用etree构建HTML的基本方法
1 '''
2 @Description: lxml创建html页面
3 @Version: 1.0
4 @Autor: Montoin Yan
5 @Date: 2020-02-05 20:01:17
6 @LastEditors : Montoin Yan
7 @LastEditTime : 2020-02-05 21:06:31
8 '''
9 from lxml import etree
10
11 root = etree.Element('html') #创建一个父节点
12 body = etree.Element('body') #创建第二个节点
13
14 root.append(body) #以root为父节点将body作为添加到root的字节点中
15 print(etree.tostring(root))
16
17 div1 = etree.SubElement(body,'div') #设置div块将其设置为body中的子节点
18 div2 = etree.SubElement(body,'div') #同上
19
20 print(etree.tostring(root,pretty_print=True).decode()) #按照root作为父节点将所有内容漂亮的打印出来
21
22 etree.HTML(text) #解析HTML文档,并返回根节点
lxml中etree模块使用
lxml还提供了两个很有用的函数,即
etree.HTML(text) #解析HTML文档,返回DOM根节点
anode.xpath("xpath绝对路径") #对节点使用xpath语法
下面的例子使用lxml+xpath爬取豆瓣一周口碑榜
1 '''
2 @Description: lxml爬取豆瓣一周口碑榜
3 @Version: 1.0
4 @Autor: Montoin Yan
5 @Date: 2020-02-05 21:16:02
6 @LastEditors : Montoin Yan
7 @LastEditTime : 2020-02-05 21:44:28
8 '''
9 from lxml import etree
10 import requests
11 import random
12
13 #设置多个请求头,防止被反扒措施进行拦截
14 ua_list = [
15 "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0",
16 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.29 Safari/537.36",
17 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362",
18 "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400"
19 ]
20 #随机pick one
21 ua = random.choice(ua_list)
22
23 url = "https://movie.douban.com/"
24 response = requests.request('GET',url,headers={
25 'User-agent':ua
26 })
27
28 content = response.text
29 # print(content) #HTML内容
30
31 #XPath //div[@class='billboard-bd']//tr//a/text()
32 html = etree.HTML(content) #使用XPath解析上下文,返回DOM根节点
33 titles = html.xpath("//div[@class='billboard-bd']//tr//a/text()") #依照XPath要求获取需要的文本
34 for i in titles:
35 print(i)
lxml的使用(节点与xpath爬取数据)的更多相关文章
- python网络爬虫之解析网页的XPath(爬取Path职位信息)[三]
目录 前言 XPath的使用方法 XPath爬取数据 后言 @(目录) 前言 本章同样是解析网页,不过使用的解析技术为XPath. 相对于之前的BeautifulSoup,我感觉还行,也是一个比较常用 ...
- 案例_(单线程)使用xpath爬取糗事百科
案例_(单线程)使用xpath爬取糗事百科 步骤如下: 首先通过xpath插件找出我们要爬取的信息的匹配规则 url = "https://www.qiushibaike.com/8hr/p ...
- 使用Xpath爬取酷狗TOP500的歌曲信息
使用xpath爬取酷狗TOP500的歌曲信息, 将排名.歌手名.歌曲名.歌曲时长,提取的结果以文件形式保存下来.参考网址:http://www.kugou.com/yy/rank/home/1-888 ...
- 爬虫系列2:Requests+Xpath 爬取租房网站信息
Requests+Xpath 爬取租房网站信息 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参考前文 ...
- 爬虫系列1:Requests+Xpath 爬取豆瓣电影TOP
爬虫1:Requests+Xpath 爬取豆瓣电影TOP [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]: ...
- 【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜
实验网站:虾米音乐排行榜 网站地址:http://www.xiami.com/chart 难度系数:★☆☆☆☆ 依赖库:request.lxml的etree (安装lxml:pip install ...
- 爬虫系列(十) 用requests和xpath爬取豆瓣电影
这篇文章我们将使用 requests 和 xpath 爬取豆瓣电影 Top250,下面先贴上最终的效果图: 1.网页分析 (1)分析 URL 规律 我们首先使用 Chrome 浏览器打开 豆瓣电影 T ...
- 爬虫系列(十一) 用requests和xpath爬取豆瓣电影评论
这篇文章,我们继续利用 requests 和 xpath 爬取豆瓣电影的短评,下面还是先贴上效果图: 1.网页分析 (1)翻页 我们还是使用 Chrome 浏览器打开豆瓣电影中某一部电影的评论进行分析 ...
- 爬虫系列4:Requests+Xpath 爬取动态数据
爬虫系列4:Requests+Xpath 爬取动态数据 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参 ...
随机推荐
- 开源项目核心商城(CoreShop)
帮小伙伴推一下他的开源项目作者是@大灰灰 核心商城(CoreShop)Beta 支持可视化布局的.Net小程序商城 [的集合,要使其活动,它需要在目标计算机上执 ...
- Git操作_从github远程仓库克隆到本地仓库, 本地代码提交
实现目的: 从github远程仓库克隆到本地仓库:本地代码提交到远程仓库. 一.从github远程仓库克隆到本地仓库: 命令行切换到指定的仓库想存放的目录,执行如下命令:git clone 远程仓库 ...
- mybatis中必须使用@param注解的四种情况
一.方法有多个参数 例如: 接口方法: @Mapper public interface UserMapper { Integer insert(@Param("username" ...
- 【NX二次开发】批量数字签名的方法,解决自己电脑编译的dll在用户正版NX无法使用的问题
在UG5.0开始,所有开发的DLL都要"签名"后才能被客户端上正版的NX调用. 1. 如果是基于c++开发的dll,使用如下方法可以顺利签名成功(这里借用网上现有的文字和图片) 1 ...
- Pytorch Dataset和Dataloader 学习笔记(二)
Pytorch Dataset & Dataloader Pytorch框架下的工具包中,提供了数据处理的两个重要接口,Dataset 和 Dataloader,能够方便的使用和加载自己的数据 ...
- 07:mysql的unknown variable ‘xxxxx’
简单说明一下: 可能有的找不到配置文件的,不要慌,这个时候 你可能以前安装了多个版本的mysql 就是说你以前是mysql5,现在换成了mysql8, 矮!! 你可能发现你的mysql8里面没有配置文 ...
- Java on Visual Studio Code的更新 – 2021年5月
杨尧今 from Microsoft VS Code Java Team 欢迎来到 5月的 VS Code for Java 更新.这次,我们将与您分享Java格式化设置编辑器和其他很酷的功能.开始吧 ...
- noip2008 总结
noip 2008题解 笨小猴 原题 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设 ...