python 网络爬虫解析方式总结

这次主要是对 XPath、BeautifulSoup 和 re(正则表达式)三种网页解析方式进行总结。

XPath表达式

首先来看XPath表达式。维基百科中对XPath表达式的解释是,最常见的XPath表达式是路径表达式(XPath这一名称的另一来源)。路径表达式是从一个XML节点(当前的上下文节点)到另一个节点、或一组节点的书面步骤顺序。这里可以以一个树形结构来理解。来查看浏览器网页代码,按下 F12 可以查看网页,这里以百度搜索首页为例进行分析。常用的两种方法可以直接复制 XPath 也可以自己手动选择路径。

 Copy XPath

可以通过右键标签,依次选择 Copy-Copy XPath 对标签路径进行复制,如下图

 可以得到标签路径:

//*[@id="u_sp"]/a[2]

手动选择路径

在手动选择之前,先了解一下 XPath 语法。下面用一个列表简单展示一下语法及其用法。这里需要用到一个插件可能更加方便地去查找路径:XPath Helper 或者 极简插件(Google商店的国内镜像版)

descendant-or-self自身引用及子孙节点//
child子节点/
attribute属性@
self自己.

 //tag 可以查找网页中所有的tag节点。在本例中,例如://a 可以查看首页的所有 a 标签,利用 XPath Helper 可以得到标签中的非标签字符内容。这里需要注意的是,当利用 python 进行提取的时候,此种方法提取的是整个 a 标签,如果想提取 a 标签下的所有非标签内容需要在后面加上/text(),即: //a/text() 来进行提取。

/tag 可以查看某节点下的子节点。在本例中,例如://div/a 可以查看所有 div 标签下的 a 标签,这里就不放图来占篇幅了。

tag[@attr="value"] 可以用来通过限定标签属性来更加精确的提取标签,也可以用来提取标签属性的值。例如://div[@id="u_sp"]/a 可以提取属性 id 为 u_sp 的 div 标签下的所有 a 标签,即下图这一条的内容。

 另外是 tag/@attr 标签在提取标签属性的值上的用法,例如://div[@id="u_sp"]/a/@href 可以提取属性 id 为 u_sp 的 div 标签下的所有 a 标签中的 href 属性的值。

 提取内容见下表:

https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1
http://news.baidu.com
https://www.hao123.com
http://map.baidu.com
https://haokan.baidu.com/?sfrom=baidu-top
http://tieba.baidu.com
http://xueshu.baidu.com
http://i.baidu.com/
javascript:;
http://www.baidu.com/more/

 今天先就说这么多啦,未完待续....


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值