【问题标题】:Python beatutiful soup 'ResultSet' object has no attribute 'get'Python 美丽的汤'ResultSet'对象没有属性'get'
【发布时间】:2014-03-20 11:18:04
【问题描述】:

我试图从网站上抓取一些链接,并在清理后将它们写入文件。网站上的链接如下所示:

<a href="javascript:changeChannel('http://dr01-lh.akamaihd.net/i/dr01_0@147054/index_1700_av-b.m3u8', 20);">DR1</a><br>
<a href="javascript:changeChannel('http://dr02-lh.akamaihd.net/i/dr02_0@147055/index_1700_av-b.m3u8', 21);">DR2</a><br>
<a href="javascript:changeChannel('http://dr03-lh.akamaihd.net/i/dr03_0@147056/index_1700_av-b.m3u8', 701);">DR3</a><br>
<a href="javascript:changeChannel('http://dr06-lh.akamaihd.net/i/dr06_0@147059/index_1700_av-b.m3u8', 31);">DR Ultra</a><br>
<a href="javascript:changeChannel('http://dr04-lh.akamaihd.net/i/dr04_0@147057/index_1700_av-b.m3u8', 38);">DR K</a><br>
<a href="javascript:changeChannel('http://dr05-lh.akamaihd.net/i/dr05_0@147058/index_1700_av-b.m3u8', 50);">DR Ramasjang</a><br>

我可以用这个来抓住它们:

links = soup.findAll(href=re.compile("javascript"))

给我这个输出:

[<a href="javascript:changeChannel('http://dr01-lh.akamaihd.net/i/dr01_0@147054/index_1700_av-b.m3u8', 20);">DR1</a>, <a href="javascript:changeChannel('http://dr02-lh.akamaihd.net/i/dr02_0@147055/index_1700_av-b.m3u8', 21);">DR2</a>, <a href="javascript:changeChannel('http://dr03-lh.akamaihd.net/i/dr03_0@147056/index_1700_av-b.m3u8', 701);">DR3</a>, <a href="javascript:changeChannel('http://dr06-lh.akamaihd.net/i/dr06_0@147059/index_1700_av-b.m3u8', 31);">DR Ultra</a>, <a href="javascript:changeChannel('http://dr04-lh.akamaihd.net/i/dr04_0@147057/index_1700_av-b.m3u8', 38);">DR K</a>, <a href="javascript:changeChannel('http://dr05-lh.akamaihd.net/i/dr05_0@147058/index_1700_av-b.m3u8', 50);">DR Ramasjang</a>]

现在我想清理它,所以我只得到''之间的 http:// 部分,这就是它变坏的地方。

我试过了

fullink = links.get('href')

我得到错误的地方:

'ResultSet' object has no attribute 'get'

那么我如何从中获取链接呢?

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    Beautiful Soup documentation 说:

    AttributeError: 'ResultSet' 对象没有属性 'foo' - 这个 通常发生是因为您希望 find_all() 返回单个标签 或字符串。但是 find_all() 返回标签和字符串的 list -a 结果集对象。您需要遍历列表并查看 .foo 的每一个。或者,如果你真的只想要一个结果,你需要 使用 find() 而不是 find_all()。

    所以你可能想要full_links = [x.get("href") for x in links]

    【讨论】:

    • 有了这个我摆脱了
    • 你可以使用[a['href'] for a in links],因为所有选中的links都有href属性。
    • @user3332151:尝试:links = re.findall("'([^']+)'", "\n".join([a['href'] for a in javascript_links]))
    • 尝试了上面的方法并得到: fulllink = re.findall("'([^']+)'", "\n".join([a['href'] for a in links ])) 类型错误:字符串索引必须是整数
    猜你喜欢
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2018-07-19
    • 2020-11-09
    • 2018-12-12
    • 1970-01-01
    相关资源
    最近更新 更多