博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20190724-Python网络数据采集/第 2 章 复杂HTML解析-导航树/正则表达式
阅读量:4950 次
发布时间:2019-06-11

本文共 1719 字,大约阅读时间需要 5 分钟。

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)选择图片标签的父标签(在示例中是标签);4 # 3)选择标签的前一个兄弟标签previous_sibling(在示例中是包含美元价格的标签);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 # 源网页图片路径代码  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

你可能感兴趣的文章
SpringMVC从入门到精通之第三章
查看>>
JS基础-dom操作
查看>>
【转】Android详细的对话框AlertDialog.Builder使用方法
查看>>
Unite Beijing 2015大型活动
查看>>
loading加载的代码
查看>>
PHP框架CI CodeIgniter 的log_message开启日志记录方法
查看>>
arraylist
查看>>
关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结
查看>>
zoj 1649 Rescue (BFS)(转载)
查看>>
371. Sum of Two Integers java solutions
查看>>
2124: 等差子序列 - BZOJ
查看>>
3529: [Sdoi2014]数表 - BZOJ
查看>>
字符串匹配算法综述
查看>>
Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
查看>>
在程序被送入后台时,向 iOS 借点时间,来完成一个长期任务
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
前端之路
查看>>
javascript 继承
查看>>
String类型转int类型方法
查看>>