【问题标题】:Beautiful soup find href美丽的汤找到href
【发布时间】:2016-12-18 15:21:47
【问题描述】:

我正在尝试仅选择特定 tr 标记内的 href。

这是我的代码:

soup=bs(driver.page_source, 'html.parser')
obj=soup.find(text="test545")
new=obj.parent.previous_sibling.previous_sibling.previous_sibling
print new
if new.has_key('href'):
    new=new['href'] 
    print"found!"   

这是输出:

<td headers="LINK"><a href="f?p=106:3:92877880706::NO::P3_ID:5502&amp;cs=tmX92fFLmToJQ69ZOs2w"><img border="0"  src="/i_5.0/menu/pencil3416x16.gif"/></a></td>

我只想选择 href 内的链接。

编辑:

感谢 alecxe 提供正确的解决方案。

解决方案-

soup=bs(driver.page_source, 'html.parser')
obj=soup.find(text="test545")
td = obj.find_previous("td", headers="LINK")
link = td.a
print(link["href"])

【问题讨论】:

  • 您已发布代码。它不工作吗?它会抛出错误吗?什么错误?请添加更多详细信息。
  • 对不起,杰夫,我认为从输出中可以清楚地看到。没有错误。问题是我只想获得 href 值。在我的代码中,我认为“new”应该有一个 href 键,但它没有。 Alecxe 解决了我的问题。

标签: python-2.7 selenium beautifulsoup


【解决方案1】:

提供页面的完整 HTML,包括带有 text="test545" 的元素的相对位置和所需的链接,将有助于为您提供更强大的解决方案。

但是,鉴于问题中发布的内容,您可以在 new 元素中找到 a 元素:

link = new.a
print(link["href"]) 

其中.a 等价于.find("a")


还可以尝试使用.find_previous() methodobj 元素中找到td 元素:

obj = soup.find(text="test545")
td = obj.find_previous("td", headers="LINK")
link = td.a
print(link["href"])

【讨论】:

    猜你喜欢
    • 2018-05-08
    • 2011-11-15
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2020-12-31
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多