- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深化解析网页结构解析模块beautifulsoup
前言
beautifulsoup(以下简称bs),是一款网页结构解析模块,它支持传统的Xpath,css ?selector 语法,可以说很强大了,下面我们就来着重引见下它的用法。
安装
???bs 可以使用pip 或者easy_install安装,便利快捷。
pip?install?Beautifulsoup4?
基本用法
一般就是先由requests 猎取到网页源码后然后对页面进行解析,如图:
这样就基本上拿到了页面的源码了。
1.依据标签直接猎取元素,如下图:
2.依据find,find_all方法查找
前者前往一个结果,后者前往全部结果
find( name , attrs , recursive , text , **kwargs )
name :要查找的标签名(字符串、正则、方法、True)
attrs: 标签的属性
recursive: 递归
text: 查找文本
**kwargs :其它 键值参数
由于class是关键字,所以要写成class_=value, 等同于attrs={class:value}
这里的参数适用于find find_all两种方法。
只不过find_all 还有其他参数,比如限制查找前往数量 的limit方法,标签内容string方法。
3.依据select方法查找
soup.select(div)
所出名为
的元素
soup.select(#aa)
全部 id 属性名为aa的元素
soup.select(.oo)
全部class 属性名为oo的元素
soup.select(div ?p)
全部在
元素之内的
元素
soup.select(div p)
全部直接在
元素之内的
元素,两头没有其他元素
soup.select(input[name])
所出名为 FORMTEXT ?????,并有一个 name ? 属性,其值无所谓的元素
soup.select(input[type=button])
所出名为 FORMTEXT ?????,并有一个 type ? 属性,其值为 button 的元素
soup.select(a)[0].get_text() # 猎取首个a元素的文本
soup.select(a)[0].attrs[href] # 猎取首个a元素的链接地址
4.关系节点名
find_parents()前往全部祖先节点的列表,find_parent()前往直接父节点
print(soup.title.find_parent())
print(soup.title.find_parent().find_all(link)[1])
print(soup.title.find_parents())
find_next_siblings()前往后面全部兄弟节点的列表,find_next_sibling()前往后面第一个兄弟节点
print(soup.title.find_next_sibling())
print(soup.title.find_next_siblings())
find_previous_siblings()前往前面全部兄弟节点的列表,find_previous_sibling()前往前面第一个兄弟节点
print(soup.title.find_previous_sibling())
print(soup.title.find_previous_siblings())
find_all_next()前往节点后全部符合条件的节点的列表, find_next()前往节点后第一个符合条件的节点
print(soup.title.find_next(link))
print(soup.title.find_all_next(link))
find_all_previous()前往节点前全部符合条件的节点, find_previous()前往节点前第一个符合条件的节点
print(soup.title.find_previous(link))
print(soup.title.find_all_previous(link))
5.对象品种
tag(标签) navigablestring(标签内字符串) beautifulsoup(对象) comment(备注)
rep=requests.get(/info/1014243481#Catalog,timeout=3)
soup=BeautifulSoup(rep.text,html.parser)
print() #beautifulsoup 对象
tr=soup.div
print(type(tr),tr) #tag对象 标签
print(tr.get_attrib
原创力文档


文档评论(0)