【问题标题】:How do I webscrabe image link tab我如何 webscrabe 图像链接选项卡
【发布时间】:2019-08-31 08:51:06
【问题描述】:

我正在尝试对图像选项卡进行网络抓取,以便获取它的链接,我可以使用该链接直接访问我正在制作的项目的图像。

问题是,每当我尝试编写 "print(soup.find('a' , class_ = 'q qs')) 时,如果没有,它就会给出输出

我遇到的另一个问题是视频和新闻标签等其他标签具有相同的标签但链接不同,那么我该如何区分两者?

图像链接的 HTML 我希望我可以在这里放一张截图,因为这很难理解。

图像标签标签

<div class="hdtb-mitem hdtb-imb" aria-selected="false" role="tab"><a class="q qs" href="/search?q=dogs&amp;safe=active&amp;client=safari&amp;rls=en&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ved=0ahUKEwiqhrOi06zkAhVFVRUIHeBbATwQ_AUIESgB"><span class="HF9Klc ZYMsjf" style="height:16px;width:16px"><svg focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"></path><path d="M14 13l4 5H6l4-4 1.79 1.78L14 13zm-6.01-2.99A2 2 0 0 0 8 6a2 2 0 0 0-.01 4.01zM22 5v14a3 3 0 0 1-3 2.99H5c-1.64 0-3-1.36-3-3V5c0-1.64 1.36-3 3-3h14c1.65 0 3 1.36 3 3zm-2.01 0a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h7v-.01h7a1 1 0 0 0 1-1V5z"></path></svg></span>Images</a></div>

HTML 图片链接

<a class="q qs" href="/search?q=dogs&amp;safe=active&amp;client=safari&amp;rls=en&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ved=0ahUKEwiqhrOi06zkAhVFVRUIHeBbATwQ_AUIESgB"><span class="HF9Klc ZYMsjf" style="height:16px;width:16px"><svg focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"></path><path d="M14 13l4 5H6l4-4 1.79 1.78L14 13zm-6.01-2.99A2 2 0 0 0 8 6a2 2 0 0 0-.01 4.01zM22 5v14a3 3 0 0 1-3 2.99H5c-1.64 0-3-1.36-3-3V5c0-1.64 1.36-3 3-3h14c1.65 0 3 1.36 3 3zm-2.01 0a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h7v-.01h7a1 1 0 0 0 1-1V5z"></path></svg></span>Images</a>

视频标签标签

<div class="hdtb-mitem hdtb-imb" aria-selected="false" role="tab"><a class="q qs" href="/search?q=dogs&amp;safe=active&amp;client=safari&amp;rls=en&amp;source=lnms&amp;tbm=vid&amp;sa=X&amp;ved=0ahUKEwiqhrOi06zkAhVFVRUIHeBbATwQ_AUIEigC"><span class="HF9Klc ZYMsjf" style="height:16px;width:16px"><svg focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M0 0h24v24H0z" fill="none"></path><path clip-rule="evenodd" d="M10 16.5l6-4.5-6-4.5v9zM5 20h14a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1zm14.5 2H5a3 3 0 0 1-3-3V4.4A2.4 2.4 0 0 1 4.4 2h15.2A2.4 2.4 0 0 1 22 4.4v15.1a2.5 2.5 0 0 1-2.5 2.5z" fill-rule="evenodd"></path></svg></span>Videos</a></div>

用于视频链接的 HTML

<a class="q qs" href="/search? q=dogs&amp;safe=active&amp;client=safari&amp;rls=en&amp;source=lnms&amp;tbm=vid&amp;sa=X&amp;ved=0ahUKEwiqhrOi06zkAhVFVRUIHeBbATwQ_AUIEigC"><span class="HF9Klc ZYMsjf" style="height:16px;width:16px"><svg focusable="false" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M0 0h24v24H0z" fill="none"></path><path clip-rule="evenodd" d="M10 16.5l6-4.5-6-4.5v9zM5 20h14a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1zm14.5 2H5a3 3 0 0 1-3-3V4.4A2.4 2.4 0 0 1 4.4 2h15.2A2.4 2.4 0 0 1 22 4.4v15.1a2.5 2.5 0 0 1-2.5 2.5z" fill-rule="evenodd"></path></svg></span>Videos</a>

您可以看到图像和视频选项卡的标签是相同的,我只有一个来检索其中一个,我该怎么做呢,我只想要指向图像选项卡的链接而不是视频选项卡。

【问题讨论】:

  • 如果您将小 html 部分等缩进 4 个空格,它们将被正确格式化。或者突出显示并按 Ctrl + K。你能分享你正在使用的网址吗?也可以通过edit使用sn-p工具插入html。
  • 我修好了你现在可以看到 HTML
  • 试试 soup.select_one('a:contains(Images)')['href'] ?

标签: html python-3.x beautifulsoup python-requests python-requests-html


【解决方案1】:

如果我们看到所有链接,我们会注意到视频链接中存在tbm=vid,图片链接中存在tbm=isch
我们可以使用 Python List Comprehension 从页面中抓取所有链接,然后使用过滤器获取需要的数据。

img_tag = [i for i in soup.find_all('a')] 

此代码返回所有a 链接。

img_tag = [i for i in soup.find_all('a') if 'tbm=isch' in i.get('href')] 

这里我在 Python List Comprehension if 'tbm=isch' in i.get('href') 中使用过滤器,并且此代码仅返回带有图像链接的 list

不管怎样都适合你的代码

from bs4 import BeautifulSoup 
img_tag = [i for i in soup.find_all('a') if 'tbm=isch' in i.get('href')] 

【讨论】:

  • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 2015-06-18
相关资源
最近更新 更多