如何使用 mechanize gem 抓取图像的图标链接

Posted

技术标签:

【中文标题】如何使用 mechanize gem 抓取图像的图标链接【英文标题】:How to scrape icon link of image using mechanize gem 【发布时间】:2021-12-31 19:55:21 【问题描述】:

我有一个网址,我必须使用mechanize gem 抓取所有图像,但一些图像网址在rel=icon 中。

我必须从这个网址获取图片:

<link rel="icon" href="https://mywebsite.com/wp-content/uploads/2021/10/cropped-favicon-32x32.png" sizes="32x32">

这是我尝试的代码,其中 scrapes 只有图像。如何让两者合二为一。

require 'mechanize'
url = "https://mywebsite.com/"

agent = Mechanize.new
page = agent.get(url)

page.images.each do |image|
  puts image #getting here all images here from image tag
end

【问题讨论】:

您只想要rel='icon' 的人吗?我看到其中 3 个 @razvans 是的,所有图片都包含在link rel="icon" 标签和a href 标签中 【参考方案1】:

我查看了Mechanize Page Link,但它只返回anchors

xpath尝试过

page.xpath('//link[contains(@rel, "icon")]').each do |icon|
  p icon.attr('href')
end

并收到:

"https://ownwebsite.com/wp-content/uploads/2021/10/cropped-favicon-32x32.png"
"https://ownwebsite.com/wp-content/uploads/2021/10/cropped-favicon-192x192.png" 
"https://ownwebsite.com/wp-content/uploads/2021/10/cropped-favicon-180x180.png"

这是一个返回所有图像的Replit。

【讨论】:

谢谢。这是有效的,我尝试了一些不同的方法并得到了结果。【参考方案2】:
page.search('link').each do |link|
      if link['href'].to_s.include?(".gif") or link['href'].to_s.include?(".png")  or link['href'].to_s.include?(".jpg")  or link['href'].to_s.include?(".jpeg")
      puts link['href']
      end
    end

【讨论】:

以上是关于如何使用 mechanize gem 抓取图像的图标链接的主要内容,如果未能解决你的问题,请参考以下文章

通过 Mechanize 抓取并提交表单。如何查看传递的参数?

ruby 使用带有Mechanize的Pismo gem从网页中提取内容。来自http://stackoverflow.com/questions/14283974/what-ruby-gem-pro

使用 Mechanize 进行抓取,遇到 HTTP 错误 403

当某些行包含其他格式时,使用 mechanize & beautiful 修饰表格

Perl WWW::Mechanize(或 LWP)获取重定向 url

如何使用 webpacker gem 访问资产