20190724-Python网络数据采集/第 2 章 复杂HTML解析-导航树/正则表达式

1. 导航树

经典的HTML树状结构

直接看下面的代码示例:(注意目标网页的标签大小写等细节,易出bug)

 1 from urllib.request import urlopen
 2 from bs4 import BeautifulSoup
 3 
 4 html = urlopen("http://www.pythonscraping.com/pages/page3.html")
 5 bsobj = BeautifulSoup(html)
 6 
 7 print(bsobj)
 8 
 9 # 打印giftlist表格中所有产品的数据行,注意代码中标签的大小写格式
10 for child in bsobj.find("table", {"id":"giftList"}).children:
11 
12 # 打印所有的后代标签
13 for child in bsobj.find("table", {"id":"giftList"}).descendants:
14     print(child)
15 
16 # 处理兄弟标签,可以选择表格中除标题(标签本身)外的所有行,或者所有兄弟标签
17 for sibling in bsobj.find("table",{"id":"giftList"}).tr.next_siblings:
18     print(sibling)
1 # 处理父标签,
2 # 1)选择图片标签src=".../";
3 # 2)选择图片标签的父标签(在示例中是<td>标签);
4 # 3)选择<td>标签的前一个兄弟标签previous_sibling(在示例中是包含美元价格的<td>标签);
5 # 4)选择标签中的文字,“$15.00”.
6 print(bsobj.find("img",{"src":".../img/gifts/img1.jpg"
7                          }).parent.previous_sibing.get_text())

核心知识点,4个函数:

.children,处理子标签;
.descendants,处理后代标签;
.next_siblings,处理兄弟标签,尤其适用于处理表格,可以通过该函数选择表格中除标题行外的所有行。(1.对象不能把自己作为兄弟标签;2.该函数只调用后面的兄弟标签)
.parent,处理父标签,应用相对较少。

2. 正则表达式
正则表达式,识别 正则字符串。上手快,记住/懂常用规则/勤查文档即可,运行很快,比如在要求快速浏览大文档查,以查找像电话号码或者邮箱地址等类似的字符串时,非常方便。

3. 正则表达式和BeautifulSoup

写正则表达式前,先写一个步骤列表描述出目标字符串结构。
正则表达式可以作为BeautifulSoup语句的任意一个参数。
 1 from urllib.request import urlopen
 2 from bs4 import BeautifulSoup
 3 import re
 4 
 5 html = urlopen("http://www.pythonscraping.com/pages/page3.html")
 6 bsobj = BeautifulSoup(html,"lxml")
 7 
 8 # 源网页图片路径代码 <img src="../img/gifts/img1.jpg">
 9 images = bsobj.findAll("img",{"src":re.compile("\.\.\/img\/gifts/img.*\.jpg")})
10 for image in images:
11     print(image["src"])

打印结果:

../img/gifts/img1.jpg
../img/gifts/img2.jpg
../img/gifts/img3.jpg
../img/gifts/img4.jpg
../img/gifts/img6.jpg

还有获取属性操作。。。

 

转载于:https://www.cnblogs.com/ElonJiang/p/11235628.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值