beautifulsoup用法(python爬虫怎么用beautifulsoup匹配超链接中间的文字)
本文目录
- python爬虫怎么用beautifulsoup匹配超链接中间的文字
- 为什么必须是from bs4 import BeautifulSoup,而不能是import bs4
- 4.18 Beautiful Soup用法
- BeautifulSoup库用法总结
- python中,BeautifulSoup包中的BeautifulSoup函数(即BeautifulSoup.BeautifulSoup)的用法
- python中css选择器+号用法
- python BeautifulSoup的用法问题 soup.select(’#link1 + .sister’)
- BeautifulSoup4中文文档
python爬虫怎么用beautifulsoup匹配超链接中间的文字
建议直接参考Bea 还建议你还是要善于运用搜索引擎(建议google,用不了的话可以用百度或bing,其次才是搜狗和360,搜索效率依次降低)和官方文档,都是现成的还都比较准确,百度知道的效率太低,还有很多答案的质量太次
为什么必须是from bs4 import BeautifulSoup,而不能是import bs4
因为Beautiful是bs4中的一个子模块,Beautiful并不是bs4。
from bs4 import BeautifulSoup 这个直接将BeautifulSoup 类导入到当前命名空间,直接使用,不需要再带包名。建议用from bs4 import BeautifulSoup。
我觉得类似前端中的import BeautifulShop from bs4吧。后面我们使用的时候就直接用BeautifulShopxxx了。不然,每次还要指定父类从其中那么多中找到这个子类,就是类似bs4.BeautifulShop这样的用法。
相关拓展
模块,又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合(即程序代码和数据结构的集合体)。它具有两个基本的特征:外部特征和内部特征。
外部特征是指模块跟外部环境联系的接口(即其他模块或程序调用该模块的方式,包括有输入输出参数、引用的全局变量)和模块的功能;内部特征是指模块的内部环境具有的特点(即该模块的局部数据和程序代码)。
模块有各种类型,如单元操作模块(换热器、精馏塔、压缩机等)、计算方法模块(加速收敛算法、最优化算法等)、物理化学性质模块(汽液相平衡计算、热焓计算等)等。
以上内容参考 百度百科-模块
4.18 Beautiful Soup用法
查看对象类型: print type(soup.a) Tag的两个重要属性name和attrs: 4.2 NavigableString:标签内部文字 如 print soup.p.string 查看对象类型: print type(soup.p.string) 4.3 BeautifulSoup:文档的全部内容,特殊的Tag对象 4.4 Comment:特殊类型的NavigableString .children返回列表生成器对象,用遍历获取所有子节点: 5.2 所有子孙节点 如果tag内包含许多子节点,.string会返回None。 5.4 多个内容 5.5 父节点及全部父节点 5.7 前后节点和全部前后节点 C. 列表: soup.find_all() D. True: 返回所有tag但不包括字符串节点 E. 方法 6.1.2 attrs 6.1.3 recursive 默认True,返回所有子孙节点。recursive=False只返回直接子节点 6.1.4 text 6.1.5 limit 限制返回结果数: soup.find_all(’a’,limit=2) 8.2 组合选择器 8.3 获取内容 在遍历输出后,使用get_text()方法获取内容。 参考: Beautiful soup用法
BeautifulSoup库用法总结
在python的爬虫中,经常需要用到强大的beautifulsoup库,如之前写的 股票数据的爬取 中就用到了它。在这里,将详细总结 beautifulsoup 的用法,来巩固相关知识。以下便是我从各种网站搜集的资料,在这里做一个汇总。(我从不生产知识,我只是知识的搬运工)
安装:win平台中‘以管理员身份运行’cmd,执行 pip install beautifulsoup4 即可安装 引用: from bs4 import BeautifulSoup 或 import bs4 即可
本文参考 中国大学MOOC / kikaylee的专栏
python中,BeautifulSoup包中的BeautifulSoup函数(即BeautifulSoup.BeautifulSoup)的用法
学编程就得啃英文! http://www.crummy.com/software/BeautifulSoup/documentation.html#Quick Start
python中css选择器+号用法
1、在CSS选择器中,加号(+)表示选择紧接着前一个元素的下一个元素。2、在Python中,使用BeautifulSoup库可以解析HTML或XML文件,并且支持CSS选择器语法。3、如果要使用CSS选择器的加号用法,可以使用BeautifulSoup库的select_one()或select()方法,传入相应的CSS选择器表达式即可实现选择。例如,soup.select(’div + p’)可以选择紧接着div元素后面的所有p元素。
python BeautifulSoup的用法问题 soup.select(’#link1 + .sister’)
这个是BeautifulSoup4才有的功能(Select选择CSS标签),在 beautifulsoup3之前没有这个方法。它是寻找包含有 link1 的标签的兄弟标签。 link1前面的#,表示查找对应的#id~ 表示所有其他兄弟标签;+ 表示第一个其他兄弟标签。Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。 对于Ruby,使用Rubyful Soup。
BeautifulSoup4中文文档
1、解析html并以友好形式显示:BeautifulSoup(html_doc,’html.parser’) print(soup.prettify()) html_doc = """ 《html》《head》《title》The Dormouse’s story《/title》《/head》 《body》 《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 通过tag的 .children 生成器,可以对tag的子节点进行循环: for child in title_tag.children: print(child) .descendants 属性可以对所有tag的子孙节点进行递归循环 for child in head_tag.descendants: print(child) 7、循环输出不带标签的所有内容: for string in soup.strings: print(repr(string)) 去掉空白 for string in soup.stripped_strings: print(repr(string)) 8、.parent 获得父节点 .parents获得所有父节点 .next_sibling / .previous_sibling 兄弟节点 .next_element 和 .previous_element 指向解析过程中下一个被解析的对象 9、find/find_all 使用正则: import re for tag in soup.find_all(re.compile("^b")): print(tag.name) 列表 soup.find_all() tag.has_attr(’id’) soup.find_all(href=re.compile("elsie"), id=’link1’) data_soup.find_all(attrs={"data-foo": "value"}) soup.find_all("a", class_="sister") soup.find_all(string="Elsie") soup.find_all("a", limit=2) #只返回2个 soup.html.find_all("title", recursive=False) #只检查1级子节点 find_parents() 和 find_parent() find_next_siblings() 合 find_next_sibling() find_previous_siblings() 和 find_previous_sibling() find_all_next() 和 find_next() find_all_previous() 和 find_previous() css选择器方式查找: soup.select("p nth-of-type(3)") soup.select("body a") soup.select("html head title") soup.select("body 》 a") #》一级子标签,多级的不匹配 soup.select("#link1 ~ .sister") soup.select("#link1 + .sister") soup.select(".sister") soup.select("") soup.select("#link1") soup.select("a#link2") soup.select("#link1,#link2") soup.select(’a’) soup.select(’a’) soup.select(’a’) soup.select(’a’) soup.select(’a’) soup.select_one(".sister") 10、append()追加内容 soup = BeautifulSoup("《a》Foo《/a》") soup.a.append("Bar") soup soup.a.contents insert markup = ’《a href="http://example.com/"》I linked to 《i》example.com《/i》《/a》’ soup = BeautifulSoup(markup) tag = soup.a tag.insert(1, "but did not endorse ") tag tag.contents soup = BeautifulSoup("《b》stop《/b》") tag = soup.new_tag("i") tag.string = "Don’t" soup.b.string.insert_before(tag) soup.b soup.b.i.insert_after(soup.new_string(" ever ")) soup.b soup.b.contents clear()清除string markup = ’《a href="http://example.com/"》I linked to 《i》example.com《/i》《/a》’ soup = BeautifulSoup(markup) tag = soup.a tag.clear() tag extract移除元素 markup = ’《a href="http://example.com/"》I linked to 《i》example.com《/i》《/a》’ soup = BeautifulSoup(markup) a_tag = soup.a i_tag = soup.i.extract() a_tag i_tag print(i_tag.parent) None decompose也是移除元素 markup = ’《a href="http://example.com/"》I linked to 《i》example.com《/i》《/a》’ soup = BeautifulSoup(markup) a_tag = soup.a soup.i.decompose() a_tag replace_with替换 markup = ’《a href="http://example.com/"》I linked to 《i》example.com《/i》《/a》’ soup = BeautifulSoup(markup) a_tag = soup.a new_tag = soup.new_tag("b") new_tag.string = "example.net" a_tag.i.replace_with(new_tag) a_tag wrap包装 soup = BeautifulSoup("《p》I wish I was bold.《/p》") soup.p.string.wrap(soup.new_tag("b")) soup.p.wrap(soup.new_tag("div")) unwrap markup = ’《a href="http://example.com/"》I linked to 《i》example.com《/i》《/a》’ soup = BeautifulSoup(markup) a_tag = soup.a a_tag.i.unwrap() a_tag prettify格式化输出,可以指定编码格式 get_text 获得文档内容,指定分隔符 u’\nI linked to |example.com|\n’ 如果不知道文档编码,使用UnicodeDamit来自动编码 from bs4 import UnicodeDammit dammit = UnicodeDammit("Sacr\xc3\xa9 bleu!") print(dammit.unicode_markup) dammit.original_encoding 11、lxml解析比其他块 Beautiful Soup对文档的解析速度不会比它所依赖的解析器更快,如果对计算时间要求很高或者计算机的时间比程序员的时间更值钱,那么就应该直接使用 lxml . 换句话说,还有提高Beautiful Soup效率的办法,使用lxml作为解析器.Beautiful Soup用lxml做解析器比用html5lib或Python内置解析器速度快很多. https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
更多文章:
中泰之战十月十日几点?郎平为何启用张常宁领衔二队参加世联赛,中泰之战将给出真正答案
2023年7月10日 15:52
我想知道第一届的世界杯在哪里什么时候?怎么查看我在qq里面的世界杯预测结果
2023年11月4日 16:55
湖人夏季联赛2021(相互认可!恭喜湖人再签一人,库里力挺队友,莫兰特是前5控卫)
2024年3月25日 09:05
nba詹姆斯视频(NBA官方开专栏追踪詹姆斯生涯得分,此举背后的原因有哪些)
2023年8月29日 09:30
2019年世界杯女排联谊(中国女排集体亮相天安门,压轴出场,排面十足,你怎么看)
2024年4月8日 15:05
360无插件直播手机版(电脑安装了360安全卫士、金山毒霸、电脑管家等软件,哪个好用)
2023年4月1日 20:12
帕里斯帝车值得买吗帕里斯帝车友深度测评?帕里斯帝有时规皮带吗
2023年5月31日 11:50
门兴格拉德巴赫图片(5月23日德甲21:30门兴格拉德巴赫vs勒沃库森如何分析)
2023年4月18日 01:06
韦世豪马赛回旋自家球门(韦世豪曾经对北京国安攻入3球,媒体称“倒戈旧主”韦世豪特别有感觉,你是怎么样看)
2023年3月23日 08:00
勇士交易最新消息(地震级交易曝光!勇士4换2换来内线巨星,豪阵碾压湖人篮网)
2024年9月6日 08:45