tip*_*ipu 5 python beautifulsoup
假设有一个包含数百个链接的页面,每个链接在a标签中都有唯一的文本.如何指定标签的文本然后从那里获取href?例如,
for a in soup.findAll('a', href=True):
print(a['href'])
Run Code Online (Sandbox Code Playgroud)
这会在整个页面中获得所有href,这是过度的.当我这样做:
for a in soup.findAll('a', href=True text="Some Value"):
print(a['href'])
Run Code Online (Sandbox Code Playgroud)
我无法获取href标记,因为它不再返回Tag对象,而是返回Navigable对象.知道如何实现我的目标吗?
text
您可以传递一个可调用对象作为检查name
标记name
和 的参数,而不是传递参数text
:
for tag in soup.findAll(lambda tag: (tag.name == 'a'
and tag.text == 'Some Value'),
href=True):
print tag['href']
Run Code Online (Sandbox Code Playgroud)
这样,返回值是 aTag
而不是 a NavigableString
。
另请注意,根据文档:
如果您使用文本,则您为名称和关键字参数提供的任何值都将被忽略。
因此,即使您只想获得NavigableString
.
你至少可以做这样的事情:
for a in soup.findAll('a', href=True):
if self.tag_to_string(a) == "Some Value":
print(a['href'])
Run Code Online (Sandbox Code Playgroud)
但还有其他方法。
华泰
归档时间: |
|
查看次数: |
3368 次 |
最近记录: |