BeautifulSoup的Html与浏览器的源代码(Python3.5)不同

时间:2017-09-09 19:05:49

标签: python

我想从谷歌图片搜索中获取源代码,我在Google Search by Image Script for Local Images中看到https://www.google.com/searchbyimage?&image_url= + image link有效。我正在使用Python,这就是我尝试过的:

from bs4 import BeautifulSoup
import requests
browser = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
headers={'User-Agent':browser,}
url = ("https://www.google.com/searchbyimage?&image_url="+"http://mlm-s1-p.mlstatic.com/635657-MLM25528207389_042017-O.jpg")
page = requests.get(url, headers= headers)
soup = BeautifulSoup(page.text, "html.parser")

pretty = soup.prettify()
print(pretty)

如果我们将view-source:添加到this,则与Chrome的源代码有很大不同。

如果您想知道,该脚本的目的是找到Google对图像的最佳猜测,在我的示例中它将是:lemmy kilmister funko pop,但我甚至找不到任何这个Beautiful Soup的html中的单词。

编辑:忘记包含库和beautifulsoup / requests

1 个答案:

答案 0 :(得分:0)

这是你的全部代码吗?只是澄清,因为你没有创建汤对象或请求页面。

假设您已经这样做了,从您添加的链接here开始,回答者说这只适用于浏览器标头,这是一个奇怪的情况。我使用你的标题在curl中运行你的代码,它将我重定向到首页,这就是为什么你找不到你的字符串。但是使用我当前的Firefox标头运行它

 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0

我能够获得正确的页面。请注意,由于这种情况,您的代码不会在以后中断。我通过稍微编辑标题进行了测试,但是一些更改(使得版本53.0很好,使得5.0没有)是紧的。

卷曲命令btw

  curl "https://www.google.com/searchbyimage?&image_url=mlm-s1-p.mlstatic.com/635657-MLM25528207389_042017-O.jpg" -L -v -o file.html -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"