文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 爬虫利器优美的Beauti

2023-01-31 06:16

关注

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

   

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

   简单使用说明:

>>> from bs4 import BeautifulSoup
>>> html_doc = """
... <html><head><title>The Dormouse's story</title></head>
...  
... <p class="title"><b>The Dormouse's story</b></p>
...  
... <p class="story">Once upon a time there were three little sisters; and their names were
... <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
... <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
... <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
... and they lived at the bottom of a well.</p>
...  
... <p class="story">...</p>
... """
>>> soup = BeautifulSoup(html_doc)
>>> soup.head()
[<title>The Dormouse's story</title>]
>>> soup.title
<title>The Dormouse's story</title>
>>> soup.title.string
u"The Dormouse's story"
>>> soup.body.b
<b>The Dormouse's story</b>
>>> soup.body.a
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
>>> 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')
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
>>> 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、首先看看我们要获得的内容:

wKiom1YXFvDTi66tAAT1iE-LNKQ789.jpg

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

2、源代码查看:

<div class="fb_bbs"><a href="http://news.zhibo8.cc/zuqiu/" style="padding: 0 5px 0 0;" target="_blank" title="足球新闻"><img src="/css/p_w_picpaths/football.png"/></a><span><a href="http://news.zhibo8.cc/zuqiu/" target="_blank"><font color="red"> 世预赛:国足0-1不敌卡塔
尔</font></a>|<a href="http://news.zhibo8.cc/zuqiu/2015-10-09/5616a910d74ac.htm" target="_blank">国足“刷卡”耻辱:11年不胜</a>|<a hf="http://news.zhibo8.cc/zuqiu/2015-10-09/5616b22cbd134.htm" target="_blank">切尔西签下阿梅利亚</a>|<a href="http://news.zhibo8.cc/zuqiu/2015-10-09/5616daa45ee48.htm" target="_blank">惊人!莱万5场14球</a>|<a href="http://tu.zhibo8.cc/zuqiu/" target="_blank">图-FIFA16中国球员</a></span></div>

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

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

#coding=utf-8
import urllib,urllib2
from bs4 import BeautifulSoup
try:
    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做爬虫确实是个利器;
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯