【发布时间】:2020-06-02 10:24:29
【问题描述】:
我有以下代码:-
import requests
from bs4 import BeautifulSoup
url = ""
page = requests.get(url, headers=HEADERS, verify=True)
soup = BeautifulSoup(page.content, 'html.parser')
images = soup.find_all("img")
for image in images:
image_url = image['src']
print(image_url)
if url not in image_url: #This is to identify absolute/relative links
link = urllib.parse.urljoin(url, image_url)
else:
link = image_url
我正在处理我同意从中抓取图像的数千个 URL。尽管如此,某些图像的 URL 并未被检测到。下面是一个不返回链接的 URL 示例:-
https://www.lerryn-cornwall.co.uk/
查看源码查看,有图片链接如:-
link rel="apple-touch-icon" href="https://primarysite-prod.s3.amazonaws.com/theme/LerrynCofEPrimarySchool/apple-touch-icon-precomposed.png">
对于处理数千个网页中图像链接的每一种可能情况有什么建议吗?我正在考虑而不是寻找 img['src'] 标签,而是简单地处理'soup'并查找包含'.png'的任何字符串,然后将它们附加到列表中。有没有更好的办法?
【问题讨论】:
-
那是因为图像不是在 html DOM 中定义的,而是在具有
background属性的 css 文件中定义的:background: url(container-home.jpg) center top no-repeat, url(container-tile.jpg) center top repeat-x; -
谢谢@johannchopin。我怎样才能用这个修改我的代码?另外,由于我将抓取相当多的网站,鉴于每个网站可能会有所不同,在处理 CSS 时有没有办法更加模糊?所以我可以识别 css 中的任何图像 URL?
-
你应该定位
link标签
标签: python css web-scraping beautifulsoup