【问题标题】:Download List of Car Pictures based on a list of their names根据名称列表下载汽车图片列表
【发布时间】:2020-02-20 12:30:53
【问题描述】:

我想根据汽车制造商型号名称的 excel 列表下载汽车图片列表。

我可以通过在 google 中点击汽车模型并在 google 结果中保存或复制第一张图片的 url 来手动执行此操作。但是我有 800 个车型名称,这很耗时。

我该怎么做? 谢谢

【问题讨论】:

  • 嗨,Med El。欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供minimale reproducible example。例如,向我们展示 yoz 已经尝试过什么以及您正在努力解决的具体问题。这样你就可以帮助别人帮助你!
  • 嗨@dario 感谢您的建议。我认为我的问题得到了很好的解释。
  • 可以显示您的 excel 文件的外观
  • 在 Excel 表中,我有一个列 Make、一个列模型和一个列程序,我将前三个列连接起来以获得汽车的全名。例如:五十铃 D-Max RG01 五十铃 D-Max RG01 大众高尔夫 VW380 大众高尔夫 VW380 日产奇骏 P33A 日产奇骏 P33A 丰田克鲁格 550B 丰田克鲁格 550B 丰田雅力士 400B 丰田雅力士 400B 马自达 CX-30 J59K 马自达 CX-30 J59K

标签: python html r web-scraping download


【解决方案1】:

这是您可以在 R 中使用的函数。您首先需要 install.packages("rvest")install.packages("httr")

library(rvest)
library(httr)

get_first_google_image <- function(car_name)
{
  site <- "https://www.google.com"
  query <- paste0(site, "/search?q=", url_escape(car_name))

  image_page <- read_html(query)                          %>% 
    html_nodes(xpath = "//a[contains(text(), 'Images')]") %>% 
    html_attr("href")

  paste0(site, image_page)             %>%
    read_html(image_page)              %>%
    html_nodes("img")                  %>% 
    html_attr("src")                   %>% 
    {grep("gstatic", ., value = TRUE)} %>% 
    `[`(1)                             %>%
    httr::GET()                        %>%
    httr::content("raw")               %>%
    writeBin(paste0("~/", car_name, ".jpg"))
}

要使用它,您只需这样做

get_first_google_image("Mazda MX5")

然后它会将来自 Google 图片搜索的第一个命中以 jpeg 格式保存到您的主目录。

如果您想将所有车名输入 R,只需在 Excel 中选择并复制该列,然后在 R 中执行

car_names <- readClipboard()

那你就可以了

for(i in seq_along(car_names) get_first_google_image(car_names[i])

这可能需要很长时间才能运行。

【讨论】:

  • 你好 Allan 谢谢你的回复 我在 R 中尝试了你的代码,我得到了这个异常: doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html, 中的错误:期望单个字符串值: [type=character; extent=0]。调用自:doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html, options = options)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 2022-08-09
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多