【问题标题】:Scraping a 'href' from a <span> with no class inside a<div>从 <span> 中刮取一个“href”,而 <div> 中没有类
【发布时间】:2020-12-17 18:29:35
【问题描述】:

我对使用 BeatifulSoup 和 python 进行抓取非常陌生,我在尝试在跨度内获取 href 但它没有类时遇到了一些困难。以下代码部分来自 phpbb 论坛,我没有问题抓取所有的href,但由于某种原因,我无法弄清楚如何获取跨度内的内容..

<div class="col-md-48 post-text" data-topic="6693rw38" data-forum="2">
<br>
<br>
<a href="http://imgshare.net/img-5ba3dt3ad8a24.html" target="_blank" class="postlink" rel="nofollow"></a>
<br>
<br>
<a href="http://imgshare.net/img-5baefr1a51a49.html" target="_blank" class="postlink" rel="nofollow"></a>
<br>
<br>
<span>
    <a href="https://k2s.cc/file/5c745ce5g9193/toyota.mp4" target="_blank">https://k2s.cc/file/5c745ce5g9193/toyota.mp4</a>
</span>
<br>
<br>
<a href="http://imgshare.net/img-5ba34d1q805b8.html" target="_blank" class="postlink" rel="nofollow"></a>
<br>
<br>
<span>
    <a href="https://k2s.cc/file/b28gr283ef76e/ford.mp4" target="_blank">https://k2s.cc/file/b28gr283ef76e/ford.mp4</a>
</span>

这将为我提供 a 标签内的所有“href”:

url ='somephpbbforum.com'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'lxml')  

link = soup.find_all('div', class_ = 'col-md-48')

for div in link:          
    all_links = [link1['href'] for link1 in div.find_all('a')]
    print(all_links)

谢谢大家!

【问题讨论】:

    标签: python web-scraping


    【解决方案1】:

    您可能正在寻找这样的东西(使用 css 选择器):

    all_links = [s['href'] for s in soup.select('div.col-md-48 > a[href]')]
    all_links
    

    输出:

    ['http://imgshare.net/img-5ba3dt3ad8a24.html',
     'http://imgshare.net/img-5baefr1a51a49.html',
     'http://imgshare.net/img-5ba34d1q805b8.html']
    

    编辑:

    要获取这些节点的文本内容,请使用

    all_links2 = [s.text for s in soup.select('div.col-md-48 > span > a[href]')]
    all_links2
    

    输出:

    ['https://k2s.cc/file/5c745ce5g9193/toyota.mp4',
     'https://k2s.cc/file/b28gr283ef76e/ford.mp4']
    

    【讨论】:

    • 感谢您的快速回答..您的代码绝对有意义,但由于某种原因它返回空列表..我要抓取的是跨度内的内容 --> a -->参考文献..
    • @AtApi 答案中的输出是您问题的示例 html 中的 &lt;a href="xxxx"]&gt; 节点内的内容。至于为什么你得到空列表 - 你可能需要在你的问题中添加实际的 url 来回答这个问题。
    • 我明白了,但我想抓取的是第 10 行和第 18 行的 span 内的 href k2s.cc/file/5c745ce5g9193/toyota.mp4" 例如和
    • @AtApi 我明白了;您正在寻找文本节点,而不是 link 属性值。见编辑。
    • 谢谢哥们!我仍然得到一个空列表,但我认为你把我放在正确的轨道上,我会更好地检查 html,看看为什么我得到空列表,但我真的很感谢你的帮助!!!!,
    猜你喜欢
    • 2019-09-06
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 2023-02-16
    • 2018-05-28
    相关资源
    最近更新 更多