python - 从 a 中刮取一个“href”,其中没有类
问题描述
我对使用 BeatifulSoup 和 python 进行抓取非常陌生,我在尝试在 span 内获取 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)
多谢你们!
解决方案
您可能正在寻找这样的东西(使用 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']
推荐阅读
- python - 在python中超时
- python - 我在 List TypeError 上使用 zip 函数时收到此错误:在 'list' 和 'int' 的实例之间不支持'>'
- node.js - 如何格式化coreui数据表中的日期时间反应
- python-3.x - Pyhon/Odoo11:在“str”和“datetime.date”的实例之间验证约束“<”时出错
- reactjs - 如何使用带有 react-router 的选项卡重定向到另一条路由?
- java - 删除 for 循环中的最后一个逗号(java)
- flutter - Flutter - 如何格式化单个文本字段
- python - 如何在不舍入整数值的情况下抓取网站表?
- php - 通过 AJAX 传递值显示 200 错误
- rust - 如何解决:连接到 Substrate 时出错 [对象事件]