[Python2.7] [爬虫] [beautifulsoup爬虫],如图,使用soup.find()查找到目标后,怎样提取其中的content?

现在位置:使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了使用BeautifulSoup编写了一段爬虫程序获取百度搜索结果的标题和url的示例,大家参考使用吧
熟悉Java的jsoup包的话,对于Python的BeautifulSoup库应该很容易上手。
代码如下:#coding: utf-8import sysimport urllibimport urllib2from BeautifulSoup import BeautifulSoup
question_word = "吃货 程序员"url = "/s?wd=" + urllib.quote(question_word.decode(sys.stdin.encoding).encode('gbk'))htmlpage = urllib2.urlopen(url).read()soup = BeautifulSoup(htmlpage)print len(soup.findAll("table", {"class": "result"}))for result_table in soup.findAll("table", {"class": "result"}):&&& a_click = result_table.find("a")&&& print "-----标题----\n" + a_click.renderContents()#标题&&& print "----链接----\n" + str(a_click.get("href"))#链接&&& print "----描述----\n" + result_table.find("div", {"class": "c-abstract"}).renderContents()#描述&&& print
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具8.Python3爬虫实例——使用BeautifulSoup4重构爬取名著 - 简书
下载简书移动应用
写了26106字,被120人关注,获得了295个喜欢
8.Python3爬虫实例——使用BeautifulSoup4重构爬取名著
1.BeautifulSoup4概论
是不是觉得正则很麻烦呢?那么BeautifulSoup4(以下简称BS4)可以轻松解决这个问题。因为BS4不用写正则!!
原理:将整个页面转为一个对象,然后将每个节点按照父子、兄弟的关系进行分类,最后形成一个树状结构。例如
&head&&/head&
&a&first&/a&
&a&second&/a&
经过解析后为
这样子直接按需求取响应的对象就可以了。不需要正则进行匹配了。
因为是对项目的重构。流程依旧是WWHS:1.从哪爬 where2.爬什么 what3.怎么爬 how4.爬了之后信息如何保存 save
3.具体代码
使用pip安装BS4.
py文件头部导入import urllib.request
import chardet
from bs4 import BeautifulSoup
读取网页代码url="/book/sanguoyanyi.html" # 要爬取的网络地址
menuCode=urllib.request.urlopen(url).read()
# 将网页源代码赋予menuCode
使用BS4处理后得到整个页面的soup和要找的部分soup2。soup=BeautifulSoup(menuCode,'html.parser')
# 使用html解析器进行解析
menu=soup.find_all(id="mulu")
# 在soup中找到id为mulu的节点
values = ','.join(str(v) for v in menu) # 将 menu转换为str类型
soup2=BeautifulSoup(values,'html.parser');
soup2=soup2.ul
# 用子节点代替soup2
找到书名并创建txt文件。bookName=soup.h1.string # 找到了书名
f=open('D://'+bookName+'.txt','a',encoding='utf8')
爬取章节url,并解决url为本地的问题。bookMenu=[] # 章节list
bookMenuUrl=[] # 章节url的list
for i in range(1,len(soup2.contents)-1): # 依次爬取书的章节
bookMenu.append(soup2.contents[i].string)
bookMenuUrl.append(soup2.contents[i].a['href'])
urlBegin="" # 解决url为本地的问题
依次爬取每章内容并写入txt。for i
range (0,len(bookMenuUrl)):# 依次替换url,读取每章页面的内容
chapterCode=urllib.request.urlopen(urlBegin+bookMenuUrl[i]).read()
result=chardet.detect(chapterCode) # 检验读取的页面的编码方式
if(result['confidence']&0.5): # 如果概率大于0.5 即采取这种编码
chapterCode=chapterCode.decode(result['encoding'])
chapterSoup=BeautifulSoup(chapterCode,'html.parser') # 使用BS读取解析网页代码
chapterResult=chapterSoup.find_all(id='con2')
# 找到id=‘con2’的节点
chapterResult = ','.join(str(v) for v in chapterResult) # 将节点内的代码转为str类型
chapterSoup2=BeautifulSoup(chapterResult,'html.parser') # 使用BS解析节点内代码
chapterSoup2=chapterSoup2.br
f.write(bookMenu[i]) # 写入文件每章标题
for j in range(0,len(chapterSoup2)): # 循环写入每章内容
chapterText=chapterSoup2.contents[j].string
f.write(chapterText)
BeautifulSoup4将解析工作交给了框架本身,我们只用根据节点进行查询就可以了。
觉得收获了一些东西的,给个喜欢和关注吧~
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
如果你是程序员,或者有一颗喜欢写程序的心,喜欢分享技术干货、项目经验、程序员日常囧事等等,欢迎投稿《程序员》专题。
投稿须知:
...
· 134543人关注
玩转简书的第一步,从这个专题开始。
想上首页热门榜么?好内容想被更多人看到么?来投稿吧!如果被拒也不要灰心哦~入选文章会进一个队...
· 119948人关注
简书上的IT大社群。
内容符合 IT 大分类皆可投稿,入选本专题对内容质量不做过高要求以提高内容流通性。其中的优质内容有机会上首...
· 71499人关注
觉得收获了一些东西的,给个喜欢和关注吧~
选择支付方式:【整理】用BeautifulSoup查找属性值未知的标签
对于Python中的BeautifulSoup,之前用其去查找
&div aria-lable=&xxx&&
之类的标签,xxx的内容未知(可变)的前提下
想要查找到对应的此div标签,之前不知道如何实现。
因为如果写成:
sopu.findAll(&div&, attrs={&aria-lable&: &xxx&});
则xxx必须写出来,如果不写出来属性值,也就没法用上attrs了,就没法实现此处查找特性属性值的标签了。
【解决过程】
1.后来看到:
&div aria-label=&5星, 747 份评分& class=&rating& role=&img& tabindex=&-1&&
&span class=&rating-star&&
&span class=&rating-star&&
&span class=&rating-star&&
&span class=&rating-star&&
&span class=&rating-star&&
&span class=&rating-count&&
747 份评分
可以通过:
soup.findAll(&div&, attrs={&aria-lable&: True});
去查找到属性包含aria-lable的div标签的。
2.所以,对于上面的,之前不知道如何处理:
用BeautifulSoup查找未知属性值,但是已知属性的名字的标签
则此处,就可以针对:
&div aria-lable=&xxx&&
sopu.findAll(&div&, attrs={&aria-lable&: True});
就可以查找到对应的包含属性aria-lable的div标签了。
3. 后来就想到了,再去看看,在之前的:
中提到的,bs的官网文档:
然后,找了半天,好不容易,才找到,相关的解释:
特殊值True和None更让人感兴趣。 True匹配给定属性为任意值的标签,None匹配那些给定的属性值为空的标签。
所以,以后知道了,如果对于属性值之类的东西,是任意值,不确定的值的话,则都是用True。
4.完整代码为:
#!/usr/bin/python
# -*- coding: utf-8 -*-
【整理】用BeautifulSoup查找属性值未知的标签
/python_use_beautifulsoup_find_tag_with_unknown_attribute_value/
/about/me/
from BeautifulSoup import BeautifulS
def beautifulsoup_tag_attr_unknown():
demo BeautifulSoup find the tag which attribute value unknown
html = &&&&div aria-label=&5星, 747 份评分& class=&rating& role=&img& tabindex=&-1&&
&span class=&rating-star&&
&span class=&rating-star&&
&span class=&rating-star&&
&span class=&rating-star&&
&span class=&rating-star&&
&span class=&rating-count&&
747 份评分
&/div&&&&;
soup = BeautifulSoup(html);
foundDiv = soup.find(name=&div&, attrs={&aria-label&:True});
#print &foundDiv=&,foundD
attrVal = foundDiv['aria-label'];
print &attrVal=&,attrV #attrVal= 5星, 747 份评分
if __name__ == &__main__&:
beautifulsoup_tag_attr_unknown();
BeautifulSoup中,想要匹配:
&tag attr1=&xxx&&
sopu.find(name=&tag&, attrs={&attr1&: True});
如果以后,在使用BeautifulSoup时,遇到类似的,想要匹配,未知的,任意的值,则应该,都可以用True去匹配。
共享此文章:
分类目录分类目录
选择分类目录
Uncategorized&&(11)
单身恋爱婚姻家庭&&(112)
&&&Lovestory&&(7)
&&&单身&&(21)
&&&婚姻&家庭&&(34)
&&&恋爱&&(46)
哲理 人生 故事&&(210)
&&&哲理佳句&&(39)
&&&电视剧《天道》&&(6)
&&&财富人生&&(44)
工作和技术&&(3,894)
&&&CharEncoding&&(4)
&&&&&&Unicode&&(1)
&&&CodeShare&&(17)
&&&CompilerLinkerParser&&(94)
&&&&&&ANTLR&&(92)
&&&&&&JavaCC&&(1)
&&&DevToolSoft&&(74)
&&&&&&Linux on Win&&(40)
&&&&&&&&&Cygwin&&(33)
&&&&&&&&&Gow&&(1)
&&&&&&&&&MingW&&(3)
&&&&&&&&&MSYS&&(3)
&&&&&&Putty&&(1)
&&&&&&Total Commander&&(2)
&&&&&&VersionControl&&(30)
&&&&&&&&&Git&&(20)
&&&&&&&&&SVN&&(8)
&&&Docbook&&(127)
&&&DocxyGen&&(1)
&&&Elance&&(6)
&&&Embedded&&(517)
&&&&&&BusyBox&&(2)
&&&&&&CrossCompiler&&(102)
&&&&&&&&&Buildroot&&(30)
&&&&&&&&&crosstool-ng&&(40)
&&&&&&Embedded Emulator&&(15)
&&&&&&&&&QEMU&&(15)
&&&&&&Embedded Filesystem&&(4)
&&&&&&&&&Yaffs2&&(2)
&&&&&&Embedded IDE&&(3)
&&&&&&&&&HEW&&(1)
&&&&&&&&&IAR&&(1)
&&&&&&Embedded OnChip Resource&&(2)
&&&&&&&&&Memory&&(2)
&&&&&&&&&&&&SDRAM&&(1)
&&&&&&Embedded OS&&(9)
&&&&&&&&&Realtime OS&&(2)
&&&&&&Embedded Peripherals&&(112)
&&&&&&&&&Bluetooth&&(21)
&&&&&&&&&CAN Bus&&(2)
&&&&&&&&&DMA&&(1)
&&&&&&&&&GPIO&&(1)
&&&&&&&&&Serial Communication&&(13)
&&&&&&&&&&&&RS232&&(10)
&&&&&&&&&&&&&&&SecureCRT&&(3)
&&&&&&&&&&&&RS485&&(2)
&&&&&&&&&Storage&&(73)
&&&&&&&&&&&&Flash&&(31)
&&&&&&&&&&&&SD/MMC&&(9)
&&&&&&&&&&&&USB&&(32)
&&&&&&Fieldbus&&(57)
&&&&&&&&&DTM&&(1)
&&&&&&&&&EDDL&&(10)
&&&&&&&&&HART&&(29)
&&&&&&&&&Modbus&&(1)
&&&&&&&&&Profibus&&(6)
&&&&&&&&&PROFINET&&(2)
&&&&&&Industrial Automation&&(59)
&&&&&&Linaro&&(1)
&&&&&&Linux Kernel&&(2)
&&&&&&MCU SoC IP-Core&&(11)
&&&&&&&&&ARM&&(4)
&&&&&&&&&NEC&&(2)
&&&&&&PLC&&(38)
&&&&&&Symbology_Barcode&&(6)
&&&&&&Thread&&(2)
&&&&&&Uboot&&(17)
&&&EncryptDecrypt&&(1)
&&&Hardware&&(13)
&&&&&&Opensource Hardware&&(10)
&&&&&&&&&pcDuino&&(7)
&&&IDE TextEditor&&(111)
&&&&&&Apatana Studio 3&&(2)
&&&&&&ATOM&&(4)
&&&&&&Eclipse&&(37)
&&&&&&Notepad++&&(5)
&&&&&&SciTE&&(1)
&&&&&&Source Insight&&(7)
&&&&&&Sublime Text&&(6)
&&&&&&Visual Studio&&(4)
&&&&&&Xcode&&(44)
&&&&&&&&&Instruments&&(1)
&&&&&&&&&iOS Simulator&&(1)
&&&Network&&(7)
&&&&&&SIP&&(1)
&&&&&&Wireshark&&(3)
&&&OS_Platform&&(769)
&&&&&&CentOS&&(5)
&&&&&&Linux&&(147)
&&&&&&&&&diff&&(4)
&&&&&&&&&Driver&&(36)
&&&&&&&&&gcc&&(1)
&&&&&&&&&makefile&&(13)
&&&&&&&&&NFS&&(2)
&&&&&&&&&patch&&(3)
&&&&&&&&&Wireless&&(7)
&&&&&&Mac&&(47)
&&&&&&&&&Cocoa&&(7)
&&&&&&&&&iphone&&(2)
&&&&&&MobilePlatform&&(523)
&&&&&&&&&Android&&(269)
&&&&&&&&&&&&Android Studio&&(15)
&&&&&&&&&&&&Osmand&&(5)
&&&&&&&&&iOS&&(254)
&&&&&&&&&&&&Carthage&&(1)
&&&&&&&&&&&&Swift&&(191)
&&&&&&&&&&&&&&&Realm&&(1)
&&&&&&Ubuntu&&(38)
&&&&&&Windows&&(9)
&&&pneumatic&&(1)
&&&ProgrammingLanguage&&(743)
&&&&&&C&&(48)
&&&&&&C#&&(161)
&&&&&&GO&&(47)
&&&&&&Java&&(50)
&&&&&&&&&JSP&&(1)
&&&&&&&&&Openfire&&(10)
&&&&&&&&&Spark&&(1)
&&&&&&Object-C&&(6)
&&&&&&Perl&&(4)
&&&&&&PHP&&(151)
&&&&&&&&&Drupal&&(16)
&&&&&&&&&Joomla&&(4)
&&&&&&&&&MediaWiki&&(4)
&&&&&&&&&WordPress&&(90)
&&&&&&Python&&(255)
&&&&&&&&&BeautifulSoup&&(11)
&&&&&&&&&Django&&(7)
&&&&&&&&&Python GUI&&(3)
&&&&&&&&&Python IDE&&(14)
&&&&&&&&&Python3&&(8)
&&&&&&&&&StringEncoding&&(16)
&&&&&&R&&(5)
&&&&&&VB.Net&&(5)
&&&&&&VBA&&(11)
&&&RegularExpression&&(54)
&&&&&&Android regex&&(3)
&&&&&&C# Regex&&(1)
&&&&&&dreamweaver regex&&(1)
&&&&&&EditPlus TR1&&(1)
&&&&&&Java regex&&(6)
&&&&&&Notepad++ regex&&(1)
&&&&&&Perl //&&(1)
&&&&&&PHP preg_match&&(1)
&&&&&&Python re&&(30)
&&&&&&UltraEdit 3 type regex&&(1)
&&&&&&VB.NET Regex&&(1)
&&&Soft Dev Basics&&(21)
&&&TechMaterialDownload&&(27)
&&&technical_fun&&(2)
&&&TechnicalLife&&(20)
&&&tmp_todo&&(103)
&&&Virtual Machine&&(78)
&&&&&&VirtualBox&&(42)
&&&&&&VMWare&&(29)
&&&Web_Technology&&(353)
&&&&&&BBS&&(8)
&&&&&&Crawl_EmulateLogin&&(75)
&&&&&&&&&Amazon&&(29)
&&&&&&&&&eBay&&(9)
&&&&&&&&&Scrapy&&(6)
&&&&&&&&&Taobao&&(1)
&&&&&&CSS&&(6)
&&&&&&Google&&(32)
&&&&&&&&&Google Adsense&&(28)
&&&&&&HTML&&(5)
&&&&&&JavaScript&&(25)
&&&&&&&&&easyUI&&(2)
&&&&&&&&&KindEditor&&(3)
&&&&&&&&&Node.js&&(10)
&&&&&&JSON&&(22)
&&&&&&MySQL&&(3)
&&&&&&Skydrive&&(5)
&&&&&&Tencent&&(1)
&&&&&&UML&&(2)
&&&&&&VirtualHost&&(68)
&&&&&&&&&cPanel&&(3)
&&&&&&&&&hawk&&(11)
&&&&&&&&&sugarhosts&&(7)
&&&&&&&&&TransferWebHosting&&(16)
&&&&&&WebServer&&(6)
&&&&&&&&&apache&&(4)
&&&&&&&&&nginx&&(1)
&&&&&&WeiXin&&(6)
&&&&&&WLW&&(24)
&&&&&&XML&&(3)
&&&&&&&&&XPath&&(2)
&&&&&&XMPP&&(5)
&&&wiki&&(2)
&&&经验和教训&&(9)
有意义&&(637)
&&&值得看的东东&&(138)
&&&新闻与社会&&(196)
&&&日本&&(13)
&&&看图不说话&&(113)
&&&罗永浩[老罗]&&(18)
有趣&&(850)
&&&多收了三五斗&&(21)
&&&开心西游记&&(43)
&&&笑话幽默&&(106)
&&&脑筋急转弯&&(19)
&&&视频&&(22)
&&&超强男女经典征婚启事&&(9)
生活&&(1,447)
&&&Tmp&&(9)
&&&个人推荐&&(84)
&&&信息记录&&(4)
&&&历史&&(3)
&&&安徽&&(12)
&&&心情与思考&&(65)
&&&文学&&(13)
&&&旅游&&(24)
&&&楼市与住房&&(308)
&&&&&&日常生活&&(3)
&&&&&&海德公园&&(39)
&&&&&&装修&&(223)
&&&&&&&&&卫浴&&(1)
&&&&&&&&&吊顶&&(1)
&&&&&&&&&地暖&&(50)
&&&&&&&&&地板&&(2)
&&&&&&&&&家电商场&&(1)
&&&&&&&&&封阳台&&(1)
&&&&&&&&&建材市场&&(9)
&&&&&&&&&整体橱柜&&(8)
&&&&&&&&&瓷砖&&(6)
&&&&&&&&&&&&木纹砖&&(3)
&&&&&&&&&空调&&(1)
&&&&&&&&&衣柜&&(1)
&&&&&&&&&装修日记&&(117)
&&&&&&&&&门&&(2)
&&&淮安&&(3)
&&&游戏&&(14)
&&&电影&&(1)
&&&电脑+数码+软件&&(611)
&&&&&&360&&(2)
&&&&&&Firefox&&(17)
&&&&&&数码电玩&&(168)
&&&&&&&&&I9100G&&(71)
&&&&&&&&&U盘量产&&(3)
&&&&&&&&&华为手机&&(22)
&&&&&&&&&安卓手机&&(5)
&&&&&&&&&老人机&&(1)
&&&&&&电信&&(2)
&&&&&&电脑_生活&&(9)
&&&&&&电脑知识&&(80)
&&&&&&笔记类软件&&(4)
&&&&&&&&&为知笔记&&(1)
&&&&&&&&&印象笔记&&(2)
&&&&&&系统使用&&(115)
&&&&&&&&&Mac系统&&(37)
&&&&&&&&&Windows系统&&(78)
&&&&&&&&&&&&win10&&(6)
&&&&&&网上银行&&(27)
&&&&&&&&&PayPal&&(1)
&&&&&&&&&中行BOC&&(13)
&&&&&&&&&华夏hxb&&(1)
&&&&&&&&&工行ICBC&&(5)
&&&&&&&&&招行&&(1)
&&&&&&&&&支付宝&&(3)
&&&&&&路由器&&(7)
&&&&&&软件使用&&(152)
&&&&&&&&&chrome&&(3)
&&&&&&&&&Excel&&(8)
&&&&&&&&&google&&(6)
&&&&&&&&&&&&goagent&&(4)
&&&&&&&&&IE&&(1)
&&&&&&&&&Office&&(3)
&&&&&&&&&Outlook&&(5)
&&&&&&&&&PDF&&(2)
&&&&&&&&&PicPick&&(1)
&&&&&&&&&PowerPoint&&(1)
&&&&&&&&&QQ&&(14)
&&&&&&&&&shadowsocks&&(3)
&&&&&&&&&Thunderbird&&(14)
&&&&&&&&&Word&&(13)
&&&&&&&&&网易163&&(5)
&&&&&&&&&&&&邮箱&&(1)
&&&&&&&&&翻墙&&(9)
&&&经济&&(15)
&&&网上购物&&(17)
&&&美食&&(8)
&&&羽毛球&&(22)
&&&苏州&&(57)
&&&&&&工业园区&&(2)
&&&&&&&&&独墅湖高教区&&(2)
知道&&(180)
&&&English&&(60)
&&&生活百科&&(23)
&&&网络资源下载&&(45)
笔记本相关&&(533)
&&&买本前必看&&(33)
&&&无线和迅驰及其相关&&(10)
&&&电脑知识扫盲&&(12)
&&&神舟资料整理&&(342)
&&&&&&别人对神舟的无端诋毁&&(7)
&&&&&&某些笔记本价钱贵但毛病也不少&&(24)
&&&&&&神舟本网站评测&&(7)
&&&&&&神舟电脑评测&&(151)
&&&&&&神舟相关&&(103)
&&&&&&神舟笔记本好的方面的例子&&(17)
&&&&&&给不熟悉的人的解答&&(26)
&&&笔记本cpu&&(26)
&&&笔记本显卡&&(36)
&&&笔记本显卡游戏效果&&(27)
&&&走出笔记本使用误区&&(6)
&&&走出笔记本购买的误区&&(14)
&&&降频功耗散热&&(11)
音乐天堂&&(526)
&&&歌曲类型&&(437)
&&&&&&Hiphop_R&B_Rock&&(23)
&&&&&&中文歌曲&&(160)
&&&&&&外文歌曲&&(200)
&&&&&&纯音乐&无歌词&&(54)
&&&特定歌手&&(38)
&&&&&&Enigma&&(11)
&&&&&&Linkinpark&&(14)
&&&&&&陈琳&&(13)
&&&音乐下载&&(1)
&&&音乐知识&&(9)
默认分类&&(212)
&&&默认分类&&(3)
免费的格式化Javascript源码的网站
查询Unicode字符,且还带Oct,Decimal,Hex,HTML Entity
HTML和Javascript都支持,很好用。编程开发子分类

我要回帖

更多关于 beautifulsoup4 爬虫 的文章

 

随机推荐