python笔记28-lxml.etree爬取html内容
前言
本篇继续lxml.etree学习,在线访问接口,通过接口返回的html,解析出想要的text文本内容
环境准备:
python 3.6
lxml
requets
定位目标
爬取我的博客首页https://www.cnblogs.com/yoyoketang/左侧栏个人基本信息
先f12抓包,找到该接口地址https://www.cnblogs.com/mvc/blog/news.aspx?blogApp=yoyoketang

# coding:utf-8
import requests
import urllib3
from lxml import etree
urllib3.disable_warnings()
url = "https://www.cnblogs.com/mvc/blog/news.aspx?blogApp=yoyoketang"
r = requests.get(url, verify=False)
# print(r.text)
dom = etree.HTML(r.content.decode("utf-8"))
block = dom.xpath("//*[@id='profile_block']")
# 打印提取到的结果
t = etree.tostring(block[0], encoding="utf-8", pretty_print=True)
print(t.decode("utf-8"))
运行结果
<div id="profile_block">昵称:<a href="https://home.cnblogs.com/u/yoyoketang/">上海-悠悠</a><br/>园龄:<a href="https://home.cnblogs.com/u/yoyoketang/" title="入园时间:2016-11-26">1年9个月</a><br/>粉丝:<a href="https://home.cnblogs.com/u/yoyoketang/followers/">1123</a><br/>关注:<a href="https://home.cnblogs.com/u/yoyoketang/followees/">72</a><div id="p_b_follow"/><script>getFollowStatus('95cb2f22-a6b3-e611-845c-ac853d9f53ac')</script></div>
提取内容
# coding:utf-8
import requests
import urllib3
from lxml import etree
urllib3.disable_warnings()
url = "https://www.cnblogs.com/mvc/blog/news.aspx?blogApp=yoyoketang"
r = requests.get(url, verify=False)
# print(r.text)
dom = etree.HTML(r.content.decode("utf-8"))
block = dom.xpath("//*[@id='profile_block']")
t1 = block[0].xpath('text()') # 获取当前节点文本元素
print(t1)
t2 = block[0].xpath('a') # 定位a标签
# 打印结果
for i, j in zip(t1, t2):
print("%s%s" % (i, j.text))
运行结果:
['昵称:', '园龄:', '粉丝:', '关注:']
昵称:上海-悠悠
园龄:1年9个月
粉丝:1123
关注:72
总结
1.获取当前节点标签名称.tag
print(block[0].tag)
div
2.获取当前节点文本
print(block[0].text)
昵称:
3.获取当前节点元素全部属性dict
print(block[0].attrib)
{'id': 'profile_block'}
4.获取当前节点某个属性
print(block[0].get("id"))
profile_block
5.所有子节点
for i in block[0].iter():
print(i.text)
profile_block
昵称:
上海-悠悠
None
1年9个月
None
1123
None
72
None
getFollowStatus('95cb2f22-a6b3-e611-845c-ac853d9f53ac')
6.获取当前节点下全部文本
print(block[0].xpath('text()'))
['昵称:', '园龄:', '粉丝:', '关注:']
7.获取本节点和子节点所有文本信息
print(block[0].xpath('.//text()'))
['昵称:', '上海-悠悠', '园龄:', '1年9个月', '粉丝:', '1123', '关注:', '72', "getFollowStatus('95cb2f22-a6b3-e611-845c-ac853d9f53ac')"]
8.获取父节点
print(block[0].getparent().tag)
body
作者:上海-悠悠 python自动化交流 QQ群:779429633
python笔记28-lxml.etree爬取html内容的更多相关文章
- Python爬虫使用lxml模块爬取豆瓣读书排行榜并分析
上次使用了BeautifulSoup库爬取电影排行榜,爬取相对来说有点麻烦,爬取的速度也较慢.本次使用的lxml库,我个人是最喜欢的,爬取的语法很简单,爬取速度也快. 本次爬取的豆瓣书籍排行榜的首页地 ...
- 【学习笔记】Python 3.6模拟输入并爬取百度前10页密切相关链接
[学习笔记]Python 3.6模拟输入并爬取百度前10页密切相关链接 问题描述 通过模拟网页,实现百度搜索关键词,然后获得网页中链接的文本,与准备的文本进行比较,如果有相似之处则代表相关链接. me ...
- python爬虫+词云图,爬取网易云音乐评论
又到了清明时节,用python爬取了网易云音乐<清明雨上>的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况.看到 ...
- Python爬虫实战二之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...
- Python爬虫实战一之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- python爬虫学习01--电子书爬取
python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...
- 【Python数据分析】简单爬虫 爬取知乎神回复
看知乎的时候发现了一个 “如何正确地吐槽” 收藏夹,里面的一些神回复实在很搞笑,但是一页一页地看又有点麻烦,而且每次都要打开网页,于是想如果全部爬下来到一个文件里面,是不是看起来很爽,并且随时可以看到 ...
- Python网络爬虫与如何爬取段子的项目实例
一.网络爬虫 Python爬虫开发工程师,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页 ...
- 转 Python爬虫实战二之爬取百度贴吧帖子
静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...
随机推荐
- log4j记录日志到指定文件
新建类文件: import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; /** * 记录日志到指定文件 ...
- Spark(二)CentOS7.5搭建Spark2.3.1分布式集群
一 下载安装包 1 官方下载 官方下载地址:http://spark.apache.org/downloads.html 2 安装前提 Java8 安装成功 zookeeper 安 ...
- day7回顾
静态方法: 与类无关,不能访问类里的任何属性和方法 类方法: 只能访问类变量 属性@property 把一个方法变成一个静态属性 反射 getattr(obj,str) setattr(obj,str ...
- easyui tree tabs
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) M - Unsatisfying 2-Sat
题目大意:给你 m 个式子, 问你最少再添加多少式子能使没有任何一种赋值方式使全部的式子为真. 并且在你给的式子中不能有非. 思路:根据题目给的m个式子可以建出2-Sat的图, 现在问你最少加多少个边 ...
- Linux下的文件与目录权限
一.用户(User).群组(Group)和其他人(Others) linux是多用户多任务的操作系统,同一时刻可能会有多个用户登录系统,考虑到文件的安全性等问题,所以Linux下的文件都属于一个特定的 ...
- thinkphp数据查询方法总结select ,find,getField,query
thinkphp已经封装好了常用的查询方法,且都比较实用,对于不常用的查询框架也保留了原始查询方法query. 1 2 $Model = new Model() // 实例化一个model对象 没有对 ...
- Collabtive 系统 SQL 注入实验(补充)
SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 具体来说,它是利用现有应用程序,将(恶意)的SQL命令注 ...
- List元素为泛型时的注意事项
最近的项目赶得非常紧,这节奏跟最近的天气一点也不搭调. 编码的过程,遇到一个关于List的小问题. 在调用List.add(E e)的时候范了一个小毛病,很自然地认为list中存储的是 E 对象的另 ...
- Ace-editor 输入内容时光标闪动,定位错乱的解决方案
请尝试将字体设置成12PX或者14px(偶数),避免设置成13px. 应该就可以解决. 同时向大家推荐一款可直接生成文档的API调试.管理工具(中文PostMAN):https://www.apipo ...