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爬取数据)的更多相关文章

  1. python网络爬虫之解析网页的XPath(爬取Path职位信息)[三]

    目录 前言 XPath的使用方法 XPath爬取数据 后言 @(目录) 前言 本章同样是解析网页,不过使用的解析技术为XPath. 相对于之前的BeautifulSoup,我感觉还行,也是一个比较常用 ...

  2. 案例_(单线程)使用xpath爬取糗事百科

    案例_(单线程)使用xpath爬取糗事百科 步骤如下: 首先通过xpath插件找出我们要爬取的信息的匹配规则 url = "https://www.qiushibaike.com/8hr/p ...

  3. 使用Xpath爬取酷狗TOP500的歌曲信息

    使用xpath爬取酷狗TOP500的歌曲信息, 将排名.歌手名.歌曲名.歌曲时长,提取的结果以文件形式保存下来.参考网址:http://www.kugou.com/yy/rank/home/1-888 ...

  4. 爬虫系列2:Requests+Xpath 爬取租房网站信息

    Requests+Xpath 爬取租房网站信息 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参考前文 ...

  5. 爬虫系列1:Requests+Xpath 爬取豆瓣电影TOP

    爬虫1:Requests+Xpath 爬取豆瓣电影TOP [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]: ...

  6. 【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜

    实验网站:虾米音乐排行榜 网站地址:http://www.xiami.com/chart  难度系数:★☆☆☆☆ 依赖库:request.lxml的etree (安装lxml:pip install ...

  7. 爬虫系列(十) 用requests和xpath爬取豆瓣电影

    这篇文章我们将使用 requests 和 xpath 爬取豆瓣电影 Top250,下面先贴上最终的效果图: 1.网页分析 (1)分析 URL 规律 我们首先使用 Chrome 浏览器打开 豆瓣电影 T ...

  8. 爬虫系列(十一) 用requests和xpath爬取豆瓣电影评论

    这篇文章,我们继续利用 requests 和 xpath 爬取豆瓣电影的短评,下面还是先贴上效果图: 1.网页分析 (1)翻页 我们还是使用 Chrome 浏览器打开豆瓣电影中某一部电影的评论进行分析 ...

  9. 爬虫系列4:Requests+Xpath 爬取动态数据

    爬虫系列4:Requests+Xpath 爬取动态数据 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参 ...

随机推荐

  1. python 利用三方的xlrd模块读取excel文件,处理合并单元格

      目的: python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式.  总体思路: (1)要想实现对Excel数据的读取,需要用到第三方应用,直接应用. (2)实际操作时候和我 ...

  2. 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入

    什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...

  3. Qt中的内存回收机制

    Qt中的内存回收机制 在Qt中创建对象的时候会提供一个 Parent对象指针(可以查看类的构造函数),下面来解释这个parent到底是干什么的. QObject是以对象树的形式组织起来的.当你创建一个 ...

  4. 【NX二次开发】Block UI 面收集器

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  5. 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 ...

  6. Flink从Kafka取数WordCount后TableApi写入ES

    一.背景说明 需求为从Kafka消费对应主题数据,通过TableApi对数据进行WordCount后,基于DDL写法将数据写入ES. 二.代码部分 说明:代码中关于Kafka及ES的连接部分可以抽象到 ...

  7. 关于MySQL索引面试题的六连炮!招架的住吗?

    1.面试真题 MySQ索引的原理和数据结构能介绍一下吗? b+树和b-树有什么区别? MySQL聚簇索引和非聚簇索引的区别是什么? 他们分别是如何存储的? 使用MySQL索引都有哪些原则? MySQL ...

  8. 【TCP/IP】TCP详解笔记

    目录 前言 17. TCP 传输控制协议 17.1 引言 17.2 TCP 服务 17.3 TCP的首部 18. TCP连接的建立与终止 18.1 引言 18.2 连接的建立与终止 18.2.1 建立 ...

  9. 安装Apache、Nginx和PHP-基于Centos7环境

    使用的软件:putty或Xshell都可. 一.搭建Apache 1.编译安装 (1).安装编译器 yum install -y gcc (2)安装Opensll 查询官网得到OpenSSL下载网址h ...

  10. 环境安装——JDK安装

    @ 目录 开发环境-JDK安装 1. 下载地址 2. 安装JDK 3. 配置系统环境 开发环境-JDK安装 无论在我们开始学习Java或者入职第一天安装环境,这个你都是必备滴!下面是下载和安装JDK的 ...