Python 使用Beautifulsoup和Mechanize解析元素中的href属性值
有人能帮我用漂亮的汤遍历html树吗 我试图通过html输出进行解析,收集每个值后,用python/django将其插入名为Python 使用Beautifulsoup和Mechanize解析元素中的href属性值,python,django,parsing,html-parsing,beautifulsoup,Python,Django,Parsing,Html Parsing,Beautifulsoup,有人能帮我用漂亮的汤遍历html树吗 我试图通过html输出进行解析,收集每个值后,用python/django将其插入名为Tld的表中 <div class="rc" data-hveid="53"> <h3 class="r"> <a href="https://billing.anapp.com/" onmousedown="return rwt(this,'','','','2','AFQjCNGqpb38ftdxRdYvKwOsUv5EOJAlpQ','m
Tld
的表中
<div class="rc" data-hveid="53">
<h3 class="r">
<a href="https://billing.anapp.com/" onmousedown="return rwt(this,'','','','2','AFQjCNGqpb38ftdxRdYvKwOsUv5EOJAlpQ','m3fly0i1VLOK9NJkV55hAQ','0CDYQFjAB','','',event)">Billing: Portal Home</a>
</h3>
其中:
问题是上面的find\u all
,距离
元素还不够远
非常感谢您的帮助。
多谢各位
from bs4 import BeautifulSoup
html = """
<div class="rc" data-hveid="53">
<h3 class="r">
<a href="https://billing.anapp.com/" onmousedown="return rwt(this,'','','','2','AFQjCNGqpb38ftdxRdYvKwOsUv5EOJAlpQ','m3fly0i1VLOK9NJkV55hAQ','0CDYQFjAB','','',event)">Billing: Portal Home</a>
</h3>
"""
bs = BeautifulSoup(html)
elms = bs.select("h3.r a")
for i in elms:
print(i.attrs["href"])
h3.ra
是一个
您可以使用css选择器(我更喜欢)、xpath或find-in元素。选择器h3.ra
将查找类r
的所有h3
,并从它们内部获取a
元素。它可能是一个更复杂的例子,比如#an_id table tr.the_tr_class td.the_td_class
,它会找到一个给定td的id,它属于给定类的tr,当然也在一个表中
这也会给你同样的结果find_all
返回一个列表,其中包含bs4.element.Tag
,find_all
有一个递归字段,不确定是否可以在一行中完成,我个人更喜欢css选择器,因为它简单且干净
for elm in bs.find_all('h3',attrs={'class': 'r'}):
for a_elm in elm.find_all("a"):
print(a_elm.attrs["href"])
除了打印,是否可以将“tld”插入django表?@CodeTalk我对django一无所知:(感谢您告诉我该怎么做。有一个问题-BeautifulSoup是否在整个过程中或多或少使用CSS选择器来选择元素和子元素?抱歉,我没有提到您也可以使用find_all或xpath来完成此操作,但我发现CSS选择器是最简单、最干净的方法。是的,在这种情况下,它可以获得所有子元素
a
,我会重新考虑。)我告诉你css选择器,当我开始解析时,我使用的是regex,然后我开始使用find方法。当我发现我可以使用css选择器时,我的生活变得轻松多了。第一次看起来有点吓人,但只是语法和习惯而已
for url in urls:
mb.open(url)
beautifulSoupObj = BeautifulSoup(mb.response().read())
beautifulSoupObj.find_all('h3',attrs={'class': 'r'})
from bs4 import BeautifulSoup
html = """
<div class="rc" data-hveid="53">
<h3 class="r">
<a href="https://billing.anapp.com/" onmousedown="return rwt(this,'','','','2','AFQjCNGqpb38ftdxRdYvKwOsUv5EOJAlpQ','m3fly0i1VLOK9NJkV55hAQ','0CDYQFjAB','','',event)">Billing: Portal Home</a>
</h3>
"""
bs = BeautifulSoup(html)
elms = bs.select("h3.r a")
for i in elms:
print(i.attrs["href"])
https://billing.anapp.com/
for elm in bs.find_all('h3',attrs={'class': 'r'}):
for a_elm in elm.find_all("a"):
print(a_elm.attrs["href"])