python - 如何从 Bing/Google 新闻提要中解析和获取干净的图像源?
问题描述
我创建了一个程序,它会抓取 Bing Newsfeed 并分析内容并将标题、摘要和新闻链接通过电子邮件发送给我。到目前为止,我已经能够使用 BeautifulSoup 正确地获得所有这些。我还想通过在 Bing Newsfeed 页面中包含显示的新闻图像来改进我的程序。我无法获取图像源链接,因为来源似乎不同。
from bs4 import BeautifulSoup
import requests
source = requests.get(https://www.bing.com/news?q=Technology&cf=intr&FORM=NWRFSH).text
soup = BeautifulSoup(source, "html.parser")
for image in soup.find_all("div", class_="image right"):
print(image.img)
如果我运行上面的代码,它会打印出一些对我来说没有多大意义的奇怪的东西。这是一个例子:
<img class="rms_img" height="132" id="emb249968768" src="/th?id=ON.B139539B9DC398104440D89FAFB6F0C2&pid=News&w=234&h=132&c=14&
rs=2&qlt=90" width="234"/>
所有其他的img标签也是这样。如您所见,此处的 data-src 并不适合获取我在发送电子邮件时可以使用的图像链接。任何人都可以查看该网站(从我的代码中)并检查一下,看看我可能做错了什么,或者在发送电子邮件时如何以干净且可用的方式获取所有图像链接?非常感谢。
解决方案
img 标签的 src 属性是完全可以的,这正是你在大多数网站上都能找到的。它是具有绝对路径(以正斜杠开头的路径)的相对 url(没有“方案”或“域名”部分),因此它是客户端(在这种情况下是您的代码)负责重建完整的绝对路径url 使用与初始请求相同的方案和域名以及来自 img 标签的路径 - 在您的示例中,最终结果应该类似于“ https://www.bing.com/th?id= ON.B139539B9DC398104440D89FAFB6F0C2&pid=News&w=234&h=132&c=14&rs=2&qlt=90 "(确实指向图像)。
注意:不要尝试自己将 url 解析为组件,只需使用 stdlib 的urllib.parse
模块即可。
推荐阅读
- replace - PhpStorm:如何在“替换路径”对话框输入中访问和修改剩余字符串?
- android - 如何获得 R.id.image 的整数值?
- python - 将数据从 Python 实时发送到 .NET Core
- html - 导航栏不固定,
- c# - Swagger UI try action 方法不会替换路由参数,而是发送占位符“{paramName}”
- python - 如何分配数组元素
- r - roxygen2自动生成文件时如何手动将importFrom添加到NAMESPACE?
- c++ - 禁用外部标头 C++ 中的警告
- linux - 如何在 Linux 桌面上以编程方式移动多个鼠标指针之一?
- mongodb - 无法从 3.6 -> 4.0 升级 Mongodb 副本集(Wire 版本不兼容)