python - 无头 Chrome 下载低分辨率图像
问题描述
我正在制作一个简单的刮刀作为我的第一个 python 脚本。在普通 chrome 中一切正常,但是当我尝试使用 headless chrome 时,下载的所有图像的分辨率都非常低
这些图像是从谷歌下载的,我想问题是谷歌没有加载高分辨率图像,因为没有显示。
print(finalwords)
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
browser = webdriver.Chrome(options=options)
browser.maximize_window()
def get_results(search_term):
url = "https://www.google.com/"
browser.get(url)
search_box = browser.find_element_by_xpath("//input [@title='Pesquisar']")
search_box.send_keys(search_term)
search_box.submit()
image_button = browser.find_element_by_link_text("Imagens")
image_button.click()
href = browser.find_element_by_xpath('//*[@id="rg_s"]/div[1]/a[1]').get_attribute("href")
print("href: " + str(href))
browser.get(href)
time.sleep(1)
src = browser.find_element_by_xpath('//*[@id="irc_cc"]/div[2]/div[1]/div[2]/div[1]/a/img').get_attribute("src")
print("src: " + str(src))
try:
arquivo = os.path.join("D:/A/scriptm/Redbone", i + ".png")
urllib.request.urlretrieve(str(src), arquivo)
print("saved!\n")
except:
print("error saving!\n")
searchterms = (finalwords)
for i in searchterms:
print(i)
get_results(i)
该脚本首先是“在新选项卡上打开图像”并下载高分辨率图像。但是在无头模式下,它会下载一个低分辨率的,关于如何解决这个问题的任何想法?
解决方案
您可以尝试设置窗口大小
options.AddArgument("--window-size=1920,1080"); //c#
但是,如果您从某个系统帐户而不是以用户身份运行代码,它可能无济于事。你可以在这里读到它:
https://www.reddit.com/r/selenium/comments/70v46v/chrome_resolution_problem_on_windows_server/
Firefox 允许您将窗口大小设置为大于系统分辨率,但我还不能让它在服务器上运行。
推荐阅读
- python - FastAPI/Redoc 创建的“openapi.json”缺少枚举参数的“类型”键
- java - 有什么方法可以将 Rest Assured 与空手道一起使用?
- firebase - Firestore 安全规则中嵌套映射中的引用字段
- java - 如何使表格单元格可编辑
- php - 如何在我的 2 个 sql 表之间建立链接?
- python - 包含一些用于测试的数据是一个好习惯吗?
- python - 给出有效载荷中的参数列表
- javascript - 根据数据库数据的存在添加条件
- c# - 使用 C# ASP NET 为项目创建报告的 ITextPdf 7.1.13 库
- java - 如何将 2020-08-17 02:18:34+0000 转换为 Oracle DATE 类型