博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 爬虫利器优美的BeautifulSoup
阅读量:6070 次
发布时间:2019-06-20

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

    近期在研究py的网络编程,编写爬虫也是顺利成章的,开始在纠结与用正则表达式来匹配,到后来发现了Beautifulsoup,用他可以非常完美的帮我完成了这些任务:

   

    Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。

   简单使用说明:

>>> from bs4 import BeautifulSoup>>> html_doc = """... The Dormouse's story...  ... 
The Dormouse's story

...  ... 
Once upon a time there were three little sisters; and their names were... 
Elsie,... 
Lacie and... 
Tillie;... and they lived at the bottom of a well.

...  ... 
...

... """>>> soup = BeautifulSoup(html_doc)>>> soup.head()[
The Dormouse's story]>>> soup.title
The Dormouse's story>>> soup.title.stringu"The Dormouse's story">>> soup.body.b
The Dormouse's story>>> soup.body.a
Elsie>>> soup.get_text()u"... The Dormouse's story\n...  \n... The Dormouse's story\n...  \n... Once upon a time there were three little sisters; and their names were\n... Elsie,\n... Lacie and\n... Tillie;\n... and they lived at the bottom of a well.\n...  \n... ...\n... ">>> soup.find_all('a')[
Elsie, 
Lacie, 
Tillie]>>> for key in soup.find_all('a'):...     print key.get('class'),key.get('href')... ['sister'] http://example.com/elsie['sister'] http://example.com/lacie['sister'] http://example.com/tillie

###通过里面的方法,可以很快调出里面的元素和结果:

简单说明:

soup.body:表示显示body标签下面的内容,也可以用.来叠加标签:

soup.title.string:表示现在titile的文本内容

 soup.get_text():表示显示所有文本内容:

soup.find_all():方式可以随意组合,也可以通过任意标签,包括class,id 等方式:

举例说明:以我常常看的直播表新闻为例;

1、首先看看我们要获得的内容:

我要获取的是上面那一栏热点新闻:如世预赛国足不敌卡塔而

2、源代码查看:

 世预赛:国足0-1不敌卡塔尔|
国足“刷卡”耻辱:11年不胜|
切尔西签下阿梅利亚|
惊人!莱万5场14球|
图-FIFA16中国球员

###从源码看到,这个是一个div 标签包裹的一个class=“fb_bbs”的版块,当然我们要确保这个是唯一的。

3、用BeautifulSoup来分析出结果代码如下:

#coding=utf-8import urllib,urllib2from bs4 import BeautifulSouptry:    html = urllib2.urlopen("http://www.zhibo8.cc")except urllib2.HTTPError as err:    print str(err)soup = BeautifulSoup(html)for i in soup.find_all("div",attrs={"class":"fb_bbs"}):    result = i.get_text().split("|")    for term in result:        print term 4、执行效果:  [root@master network]# python url.py 世预赛:国足0-1不敌卡塔尔国足“刷卡”耻辱:11年不胜切尔西签下阿梅利亚惊人!莱万5场14球图-FIFA16中国球员利物浦官方宣布克洛普上任档案:克洛普的安菲尔德之旅欧预赛-德国爆冷0-1爱尔兰葡萄牙1-0胜丹麦图-穆帅难罢手到此任务差不多完成,代码量比re模块少了很多,而且简洁唯美,用py做爬虫确实是个利器;

转载地址:http://rdygx.baihongyu.com/

你可能感兴趣的文章
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
ThreadPoolExecutor线程池运行机制分析-线程复用原理
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>