目录

  • 1.Xpath简介
    • 1.1使用流程:
    • 1.2Xpath常用的路径表达式
    • 1.3 使用lxml解析
  • 2 实战:爬取丁香园-用户名和回复内容
    • 2.1 获取url的html
    • 2.2 lxml解析html
    • 2.3 利用Xpath表达式获取user和content(完成xpath的语句)
    • 2.4 保存爬取的内容

1.Xpath简介

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

1.1使用流程:

  1. 学习xpath,使用lxml+xpath提取内容。

  2. 使用xpath提取丁香园论坛的回复内容。

  • 抓取丁香园网页:http://www.dxy.cn/bbs/thread/626626#626626 。

1.2Xpath常用的路径表达式

  • XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
  • 在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。
  • XML文档是被作为节点树来对待的。

XPath使用路径表达式在XML文档中选取节点。节点是通过沿着路径选取的。下面列出了最常用的路径表达式:

  • nodename 选取此节点的所有子节点。
  • / 从根节点选取。
  • // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
  • . 选取当前节点。
  • … 选取当前节点的父节点。
  • @ 选取属性。
  • /text() 提取标签下面的文本内容
    • 如:
    • /标签名 逐层提取
    • /标签名 提取所有名为<>的标签
    • //标签名[@属性=“属性值”] 提取包含属性为属性值的标签
    • @属性名 代表取某个属性名的属性值

1.3 使用lxml解析

  • 导入库:from lxml import etree

  • lxml将html文本转成xml对象

    • tree = etree.HTML(html)
  • 用户名称:tree.xpath(’//div[@class=“auth”]/a/text()’)

  • 回复内容:tree.xpath(’//td[@class=“postbody”]’) 因为回复内容中有换行等标签,所以需要用string()来获取数据。

    • string()的详细见链接:https://www.cnblogs.com/CYHISTW/p/12312570.html
  • Xpath中text(),string(),data()的区别如下:

    • text()仅仅返回所指元素的文本内容。
    • string()函数会得到所指元素的所有节点文本内容,这些文本讲会被拼接成一个字符串。
    • data()大多数时候,data()函数和string()函数通用,而且不建议经常使用data()函数,有数据表明,该函数会影响XPath的性能。

2 实战:爬取丁香园-用户名和回复内容

  • 爬取思路:

    1. 获取url的html
    2. lxml解析html
    3. 利用Xpath表达式获取user和content
    4. 保存爬取的内容
# 导入库
from lxml import etree
import requestsurl = "http://www.dxy.cn/bbs/thread/626626#626626"

2.1 获取url的html

req = requests.get(url)
html = req.text
# html

2.2 lxml解析html

tree = etree.HTML(html)
tree
<Element html at 0xd080a8>

2.3 利用Xpath表达式获取user和content(完成xpath的语句)

user = tree.xpath('//div[@class="auth"]/a/text()')
# print(user)
content = tree.xpath('//td[@class="postbody"]')

2.4 保存爬取的内容

results = []
for i in range(0, len(user)):# print(user[i].strip()+":"+content[i].xpath('string(.)').strip())# print("*"*80)# 因为回复内容中有换行等标签,所以需要用string()来获取数据results.append(user[i].strip() + ":  " + content[i].xpath('string(.)').strip())
# 打印爬取的结果
for i,result in zip(range(0, len(user)),results):print("user"+ str(i+1) + "-" + result)print("*"*100)
user1-楼医生:  我遇到一个“怪”病人,向大家请教。她,42岁。反复惊吓后晕厥30余年。每次受响声惊吓后发生跌倒,短暂意识丧失。无逆行性遗忘,无抽搐,无口吐白沫,无大小便失禁。多次跌倒致外伤。婴儿时有惊厥史。入院查体无殊。ECG、24小时动态心电图无殊;头颅MRI示小软化灶;脑电图无殊。入院后有数次类似发作。请问该患者该做何诊断,还需做什么检查,治疗方案怎样?
****************************************************************************************************
user2-lion000:  从发作的症状上比较符合血管迷走神经性晕厥,直立倾斜试验能协助诊断。在行直立倾斜实验前应该做常规的体格检查、ECG、UCG、holter和X-ray胸片除外器质性心脏病。贴一篇“口服氨酰心安和依那普利治疗血管迷走性晕厥的疗效观察”作者:林文华 任自文 丁燕生http://www.ccheart.com.cn/ccheart_site/Templates/jieru/200011/1-1.htm
****************************************************************************************************
user3-xghrh:  同意lion000版主的观点:如果此患者随着年龄的增长,其发作频率逐渐减少且更加支持,不知此患者有无这一特点。入院后的HOLTER及血压监测对此患者只能是一种安慰性的检查,因在这些检查过程中患者发病的机会不是太大,当然不排除正好发作的情况。对此患者应常规作直立倾斜试验,如果没有诱发出,再考虑有无可能是其他原因所致的意识障碍,如室性心动过速等,但这需要电生理尤其是心腔内电生理的检查,毕竟是有一种创伤性方法。因在外地,下面一篇文章可能对您有助,请您自己查找一下。心理应激事件诱发血管迷走性晕厥1例 ,杨峻青、吴沃栋、张瑞云,中国神经精神疾病杂志, 2002 Vol.28 No.2
****************************************************************************************************
user4-keys:  该例不排除精神因素导致的,因为每次均在受惊吓后出现。当然,在作出此诊断前,应完善相关检查,如头颅MIR(MRA),直立倾斜试验等。
****************************************************************************************************

爬虫 -----beautifulsoup、Xpath、re (二)附爬取丁香园用户名以及回复内容相关推荐

  1. Python爬虫系列(二):爬取中国大学排名丁香园-用户名和回复内容淘宝品比价

    Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品比价 目录 Python爬虫系列(二):爬取中国大学排名&丁香园-用户名和回复内容&淘宝品 ...

  2. 爬虫(2)之 Xpath(爬取丁香园)

    Xpath常用的路径表达式: XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言. 在XPath中,有七种类型的节点:元素.属性.文本.命 ...

  3. 爬虫实战-用beautifulsoup提取丁香园论坛的回复内容

    爬虫实战 BeautifulSoup 什么是 XPath? 今天的任物是通过requests + bs4 & lxml 这三个库来完成爬取丁香园论坛的回复内容首先我们说一下数据 这里的数据包含 ...

  4. Python爬虫小白教程(二)—— 爬取豆瓣评分TOP250电影

    文章目录 前言 安装bs4库 网站分析 获取页面 爬取页面 页面分析 其他页面 爬虫系列 前言 经过上篇博客Python爬虫小白教程(一)-- 静态网页抓取后我们已经知道如何抓取一个静态的页面了,现在 ...

  5. Python爬虫笔记(3)- 爬取丁香园留言

    Python爬虫笔记(3)- 爬取丁香园留言 爬取丁香园留言:主要用到了模拟登录 爬取丁香园留言:主要用到了模拟登录 import requests, json, re, random,time fr ...

  6. [转载] python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器)

    参考链接: Python vars() python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器) 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造 ...

  7. python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器)

    python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器) 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,和本博客无关 目录 python ...

  8. 利用paddlepaddle爬取丁香园实时统计数据,并生成疫情地图!!

    当下,新型冠状病毒感染的肺炎疫情无时无刻不牵动着人们的心.面对来势汹汹的疫情,除了奋战在前线的医护人员以及防疫建设工作者们,小媛们也想尽一份绵薄之力. 这不,今天为大家带来了一份超超超简单的!生成自己 ...

  9. 爬虫学习2.2 使用xpath提取丁香园论坛的回复内容

    任务描述 学习xpath,使用lxml+xpath提取内容. 使用xpath提取丁香园论坛的回复内容. 丁香园直通点:http://www.dxy.cn/bbs/thread/626626#62662 ...

最新文章

  1. 常见Jvm面试题总结及答案整理 120道(持续更新)
  2. 使用instsrv.exe+srvany.exe将应用程序安装为windows服务
  3. xslt的简单使用[xml--html]
  4. 搭建Docker环境---私有仓库registry搭建
  5. Java ArrayList contains()方法及示例
  6. hdp对应hadoop的版本_好程序员大数据学习路线分享hadoop的知识总结
  7. 共享内存及其用mmap实现共享内存
  8. 蓝桥杯 ADV-120算法提高 6-17复数四则运算
  9. Emacs进阶之使用Google翻译单词及句子
  10. csu 1578 Opening Ceremony (递推 )
  11. python错误修复方法_python常见异常及解决方法
  12. 机器学习(八)——SVD推荐系统
  13. JVM——字节码指令(转)
  14. 百度网盘下载提速小技巧
  15. 页面优化之懒加载与预加载
  16. 查看jvm的运行参数
  17. Yii Framework 开发教程(29) Zii组件-Menu 示例
  18. 采样点数与采样频率的区别
  19. Django入门-6:视图-HttpReqeust对象
  20. Android通过OMA获得ESE的CPLC

热门文章

  1. 海淘iherb购物最新傻瓜攻略
  2. java reactjs_[Java教程]Reactjs 入门基础(一)
  3. 本草纲目pdf彩图版下载_本草纲目彩色图谱下载
  4. android手机蓝屏代码,android手机进入蓝屏蓝屏怎么关机
  5. android 微博tab,Android实现新浪微博客户端tab时遇到bug、
  6. cloudreve使用体验
  7. java自增序列实现_java自增序列程序实现
  8. 【重磅】物联网产业全景图谱报告,首开国内IoT产业二维视角全景图之先河
  9. qq空间微博等更多社交平台分享
  10. 心理学上说:拖延——是最厉害的拒绝