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 [分页]:参 ...
随机推荐
- python 利用三方的xlrd模块读取excel文件,处理合并单元格
目的: python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式. 总体思路: (1)要想实现对Excel数据的读取,需要用到第三方应用,直接应用. (2)实际操作时候和我 ...
- 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入
什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...
- Qt中的内存回收机制
Qt中的内存回收机制 在Qt中创建对象的时候会提供一个 Parent对象指针(可以查看类的构造函数),下面来解释这个parent到底是干什么的. QObject是以对象树的形式组织起来的.当你创建一个 ...
- 【NX二次开发】Block UI 面收集器
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- SVN报错“Failed to run the WC DB work queue associated with”解决办法
最近在更新SVN上的ISO代码时,失败报错: Failed to run the WC DB work queue associated with "目录/文件",clean u ...
- Flink从Kafka取数WordCount后TableApi写入ES
一.背景说明 需求为从Kafka消费对应主题数据,通过TableApi对数据进行WordCount后,基于DDL写法将数据写入ES. 二.代码部分 说明:代码中关于Kafka及ES的连接部分可以抽象到 ...
- 关于MySQL索引面试题的六连炮!招架的住吗?
1.面试真题 MySQ索引的原理和数据结构能介绍一下吗? b+树和b-树有什么区别? MySQL聚簇索引和非聚簇索引的区别是什么? 他们分别是如何存储的? 使用MySQL索引都有哪些原则? MySQL ...
- 【TCP/IP】TCP详解笔记
目录 前言 17. TCP 传输控制协议 17.1 引言 17.2 TCP 服务 17.3 TCP的首部 18. TCP连接的建立与终止 18.1 引言 18.2 连接的建立与终止 18.2.1 建立 ...
- 安装Apache、Nginx和PHP-基于Centos7环境
使用的软件:putty或Xshell都可. 一.搭建Apache 1.编译安装 (1).安装编译器 yum install -y gcc (2)安装Opensll 查询官网得到OpenSSL下载网址h ...
- 环境安装——JDK安装
@ 目录 开发环境-JDK安装 1. 下载地址 2. 安装JDK 3. 配置系统环境 开发环境-JDK安装 无论在我们开始学习Java或者入职第一天安装环境,这个你都是必备滴!下面是下载和安装JDK的 ...