我有以下代码:-
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。以下示例中未返回任何链接的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'的字符串,然后将它们附加到列表中。有更好的方法吗?
答案 0 :(得分:0)
正如@johannchopin所说,您也应该抓取每个网站的css文件,您可以通过抓取链接标签通过html找到css文件的url,然后您需要在css文件字符串中搜索每个网站的URL图像,尽管此url可能存储在与css文件相同的目录中,但是,请记住,在css文件中,您只会根据css文件的存储位置来接收文件的位置。如果将css文件存储在单独的文件夹中,则img文件的位置将看起来像“ ../img/someimg.png”。“ ..”符号表示上层目录,就像您回到浏览器一样,它基本上意味着将目录切换到当前文件的父目录。希望对您有所帮助。
答案 1 :(得分:0)
尝试遵循css
选择器。检查是否有帮助。
for item in soup.select('[href*=".png"],[src*=".png"]'):
print(item)