python网络爬虫-正则表达式和BeautifulSoup
2017-09-18 13:15
387 查看
在抓取网页时,BeautifulSoup和正则表达式总是配合使用的。其实,大多数支持字符串参数的函数(比如find(id="aTagIdHere"))都可以用正则表达式实现。让我们看几个例子,待抓取的网页时http://www.pythonscaping.com/pages/pages3.html。在爬取之前,我们观察发现网页上有几个商品图片,它们的源码形式如下:
<img src="../img/gifts/img1.jpg"/> 如果我们想抓取所有图片的URL链接,非常直接的做法就是用findAll("img")抓取所有图片。但是有个问题,除了那些明显“多余的”图片,比如(LOGO)之外,新式网站中有一些隐藏图片,用于网页布局留白和元素对齐的空白图片,以及一些不易于察觉的图片标签。总之,你不能仅用商品图片来统计网页上所有的图片。而且网页的布局也可能会变化,或者,因为某些原因,我们不想通过图片在网页中位置来查找标签。那么当你想抓取随机分布在网站里的某个元素或数据时,就会出现问题。例如,一些网页的最上面可能有一张商品图片,但是在另外一些网页上没有。
解决这类问题的办法,就是直接定位那些标签来查找信息。在本例中,我们直接通过商品图片的文件路径来查找:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
html=urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj=BeautifulSoup(html,"html.parser")
images=bsObj.findAll("img",{"src":re.compile("\.\.\/img\/gifts\/img.*\.jpg")})
for image in images:
print(image["src"])执行结果如下:
上述代码会打印出图片的相对路径,都是以../img/gifts/img开头,以.jpg结尾。正则表达式可以作为BeautifulSoup语句的任意一个参数,让你的目标元素查找工作极具灵活性。
<img src="../img/gifts/img1.jpg"/> 如果我们想抓取所有图片的URL链接,非常直接的做法就是用findAll("img")抓取所有图片。但是有个问题,除了那些明显“多余的”图片,比如(LOGO)之外,新式网站中有一些隐藏图片,用于网页布局留白和元素对齐的空白图片,以及一些不易于察觉的图片标签。总之,你不能仅用商品图片来统计网页上所有的图片。而且网页的布局也可能会变化,或者,因为某些原因,我们不想通过图片在网页中位置来查找标签。那么当你想抓取随机分布在网站里的某个元素或数据时,就会出现问题。例如,一些网页的最上面可能有一张商品图片,但是在另外一些网页上没有。
解决这类问题的办法,就是直接定位那些标签来查找信息。在本例中,我们直接通过商品图片的文件路径来查找:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
html=urlopen("http://www.pythonscraping.com/pages/page3.html")
bsObj=BeautifulSoup(html,"html.parser")
images=bsObj.findAll("img",{"src":re.compile("\.\.\/img\/gifts\/img.*\.jpg")})
for image in images:
print(image["src"])执行结果如下:
上述代码会打印出图片的相对路径,都是以../img/gifts/img开头,以.jpg结尾。正则表达式可以作为BeautifulSoup语句的任意一个参数,让你的目标元素查找工作极具灵活性。
相关文章推荐
- python爬虫里信息提取的核心方法: Beautifulsoup、Xpath和正则表达式
- [Python]网络爬虫(七):Python中的正则表达式教程(转)
- python网络爬虫学习(三)正则表达式的使用之re.match方法
- Python网络爬虫与信息提取-Day11-正则表达式的概念和语法
- Python网络爬虫(3)正则表达式
- [Python]网络爬虫(七):Python中的正则表达式教程
- python网络爬虫及正则表达式
- [Python]网络爬虫(七):Python中的正则表达式教程
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
- [Python]网络爬虫(七):Python中的正则表达式教程
- [Python]网络爬虫(七):Python中的正则表达式教程
- Python网络爬虫与信息提取-Day12-Re(正则表达式)库入门
- [Python]网络爬虫(七):Python中的正则表达式教程
- Python网络爬虫中的网页中文正则表达式匹配小心得
- python网络爬虫学习笔记之之正则表达式
- Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)
- python3实现网络爬虫(6)--正则表达式和BeautifulSoup配合使用
- [Python]网络爬虫(七):Python中的正则表达式教程
- Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup) (转)
- Python网络爬虫与信息提取(三) 正则表达式