Python 有没有一种方法可以让我用这样的代码从任何搜索引擎下载图像?

Python 有没有一种方法可以让我用这样的代码从任何搜索引擎下载图像?,python,web-scraping,beautifulsoup,bytesio,Python,Web Scraping,Beautifulsoup,Bytesio,我试着从bing下载图片到一个目录,但由于某种原因,代码只是执行,什么也没有给我。。甚至一个错误都没有。。我也使用了用户代理HTTP。。但它似乎仍然不起作用。。我该怎么办 from bs4 import BeautifulSoup import requests from PIL import Image from io import BytesIO url = 'https://www.bing.com/search' search = input("Search for: &qu

我试着从bing下载图片到一个目录,但由于某种原因,代码只是执行,什么也没有给我。。甚至一个错误都没有。。我也使用了用户代理HTTP。。但它似乎仍然不起作用。。我该怎么办

from bs4 import BeautifulSoup
import requests
from PIL import Image
from io import BytesIO

url = 'https://www.bing.com/search'
search = input("Search for: ")
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 
Firefox/80.0'}
params = {"q": search}
r = requests.get(url, headers=headers, params=params)

soup = BeautifulSoup(r.text, "html.parser")
links = soup.findAll("a", {"class": "thumb"})

for item in links:
     img_obj = requests.get(item.attrs["href"])
     print("Getting", item.attrs["href"])
     title = item.attrs["href"].split("/")[-1]
     img = Image.open(BytesIO(img_obj.content))
     img.save("./scraped_images/" + title, img.format)

要获取所有图像,您需要将
/images
添加到链接中。下面是一个对代码进行修改的示例:

from bs4 import BeautifulSoup
from PIL import Image
from io import BytesIO
import requests
import json

search = input("Search for: ")

url = "https://www.bing.com/images/search"

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0"
}
params = {"q": search, "form": "HDRSC2", "first": "1", "scenario": "ImageBasicHover"}
r = requests.get(url, headers=headers, params=params)

soup = BeautifulSoup(r.text, "html.parser")
links = soup.find_all("div", {"class": "img_cont hoff"})

for data in soup.find_all("a", {"class": "iusc"}):
    json_data = json.loads(data["m"])
    img_link = json_data["murl"]
    img_object = requests.get(img_link, headers=headers)
    title = img_link.split("/")[-1]

    print("Getting: ", img_link)
    print("Title: ", title + "\n")

    img = Image.open(BytesIO(img_object.content))
    img.save("./scraped_images/" + title)

要获取所有图像,您需要将
/images
添加到链接中。下面是一个对代码进行修改的示例:

from bs4 import BeautifulSoup
from PIL import Image
from io import BytesIO
import requests
import json

search = input("Search for: ")

url = "https://www.bing.com/images/search"

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0"
}
params = {"q": search, "form": "HDRSC2", "first": "1", "scenario": "ImageBasicHover"}
r = requests.get(url, headers=headers, params=params)

soup = BeautifulSoup(r.text, "html.parser")
links = soup.find_all("div", {"class": "img_cont hoff"})

for data in soup.find_all("a", {"class": "iusc"}):
    json_data = json.loads(data["m"])
    img_link = json_data["murl"]
    img_object = requests.get(img_link, headers=headers)
    title = img_link.split("/")[-1]

    print("Getting: ", img_link)
    print("Title: ", title + "\n")

    img = Image.open(BytesIO(img_object.content))
    img.save("./scraped_images/" + title)

当我搜索例如
“tree”
时,我没有看到带有class
thumb
标记。是这样吗?好的,我看到了带有class=“iusc”的a。。你也看到了吗?我甚至把iusc现在,它仍然不工作。。for循环中是否有错误。。我是说在结果中,进入for循环?我也应该把标题放在那里吗?当我搜索例如
“tree”
时,我没有看到带有class
thumb
的标签。是这样吗?好的,我看到了带有class=“iusc”的a。。你也看到了吗?我甚至把iusc现在,它仍然不工作。。for循环中是否有错误。。我是说在结果中,进入for循环?我也应该把头球放在那里吗?@SanskarB.C。请考虑将答案标记为accepted@SanskarB.C. 再见,谢谢。。但是除了丢失的/图像。。我的代码也很好。。它仍然显示出一些错误。。为什么在后面的部分使用Json?我的密码出了什么问题?@SanskarB.C。我不记得到底发生了什么事。但是图像的链接是JSON格式的。因此,我使用
json
模块提取了它。。数据中的m是多少?@SanskarB.C。请考虑将答案标记为accepted@SanskarB.C. 再见,谢谢。。但是除了丢失的/图像。。我的代码也很好。。它仍然显示出一些错误。。为什么在后面的部分使用Json?我的密码出了什么问题?@SanskarB.C。我不记得到底发生了什么事。但是图像的链接是JSON格式的。因此,我使用
json
模块提取了它。。数据中的m是多少[“m”]和下面的murl?