如何从requests.get()获取更多标签

问题描述 投票:2回答:1

我想从这里获取图像。

https://www.google.co.kr/search?q=dog&rlz=1C1MSIM_koKR747KR747&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjSn7Hm053YAhWLmpQKHXRpAh4Q_AUICigB&biw=1440&bih=794

您可以使用Chrome开发者工具检查是否有很多“img”标记。但是,当我运行下面的代码时,我很失望看到数字21.我怎么能增加它?

r=requests.get(url)
soup=bsp(r.text,'lxml')
len(soup.find_all('img'))
python beautifulsoup python-requests
1个回答
2
投票

问题在于Google提出的静态页面实际上并不包含任何图像搜索结果。如果您获取所获得的结果中包含的图像,您将找到Google徽标和一些结构图像 - 可能是用于建议搜索精炼的标记。

实际的图像是由Javascript代码懒得加载的,并且它很可能会让那些使用请求 - 这意味着你会通过使用浏览器的工具来检查页面的客户端代码对服务器执行的请求,并模仿这些请求。这可能是不可行的,因为Google很容易将一些令牌和预计算插入到懒惰请求中,这些请求很难从页面上的Javascript进行逆向工程。此外,它很可能违反了Google图片搜索的使用条款。

您可以尝试切换到Selenium进行网络搜索,而不是请求。因为它使用真正的浏览器,它将运行Javascript并生成实际的延迟请求。它会起作用 - 但您仍然会侵犯网站的使用条款,并且可能不久您就开始在结果中获得验证码。

因此,执行此类操作的正确方法是检查服务提供商(在这种情况下为Google图片搜索)是否具有可用于执行搜索的公共API。在搜索时,您会发现Google Image Search API已被弃用,现在可以使用Google Search API查找图片了。目前,他们每天允许100次免费搜索,之后将收取服务费用。

这是他们理解API的链接,也可能是注册

https://developers.google.com/custom-search/json-api/v1/overview?csw=1

在您完成理解并获得API密钥之后,有一个API的Python包装器可以让您免除很多麻烦,并可能为您提供图像的URL:

https://pypi.python.org/pypi/Google-Search-API

© www.soinside.com 2019 - 2024. All rights reserved.