【发布时间】:2022-01-23 06:04:32
【问题描述】:
我的脚本有点工作,但它保存的文件是空的。有任何想法吗?请原谅我在顶部所有未使用的导入!我尝试了很多不同的方法来做到这一点。在这里,我正在使用 selenium 拉动 img。然后 SRC 通过循环迭代并转换为字节,以便可以使用 os.path 写入它们。我怀疑该网站可能正在保护自己免受此类抓取?
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import os
import urllib
import urllib3
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
import requests
driver = webdriver.Firefox()
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)
driver.get("https://superrare.com/features/the-intersection-of-machine-and-artist")
time.sleep(2)
#the element with longest height on page
ele=driver.find_element("xpath", '//div[@id="root"]')
total_height = ele.size["height"]+8000
time.sleep(2)
driver.set_window_size(1920, total_height)
time.sleep(2)
imgsrc2 = WebDriverWait(driver,50).until(EC.presence_of_all_elements_located((By.XPATH, "//img")))
time.sleep(5)
download_folder = "/Users/rcastong/Desktop/imgs"
if not os.path.exists(download_folder):
os.makedirs(download_folder)
for i in imgsrc2:
imgsrc = i.get_attribute("src")
str_img = str.encode(imgsrc)
with open(os.path.join(download_folder, os.path.basename(imgsrc)), "wb") as f:
f.write(str_img)
【问题讨论】:
-
如果
src是图像的链接,那么您无法使用str.encode()下载它,但您需要requests.get(src)- 但我在您的代码中看不到requests.get(src)。 -
如果
src是字符串BASE64的图像,那么您将需要模块base64将其转换回图像字节。 -
src可以是相对 url,您可能需要添加https://superrare.com/...才能使用绝对链接。您可以使用print()查看变量中的内容。
标签: python selenium web-scraping