网页抓取的漂亮汤没有回报

时间:2018-06-19 12:11:54

标签: html web-scraping beautifulsoup python-requests web-crawler

a[6] = {10, 21, 32, 43, 54, 35};

我正在尝试从Google搜索引擎中提取电影的imdb评级。每次返回都不返回,尽管id是正确的。

2 个答案:

答案 0 :(得分:1)

如果您尝试在DOM中找到before-appbar

import requests
from bs4 import BeautifulSoup
#Finds the imdb rating of a given movie or TV series
search_term1="What is the imdb rating of "
search_term2=input("Enter the name of the movie or TV Series : ")
search_term=search_term1+search_term2
response=requests.get("https://www.google.co.in/search?q="+search_term)
print("before-appbar" in response.text)

输出为 False

因此,显然“ before-appbar”不是此处的任何元素的ID。

我的猜测是您正在尝试通过从浏览器检查DOM元素来确定它。但是在大多数情况下,JS对DOM进行了很多更改,因此它与您在python中使用requests所获得的匹配。

我可以为您推荐两种可能的解决方案:

  1. 将响应保存在html文件中,在浏览器中将其打开,然后 检查您需要查找的元素。

    f = open("response.html", "w")
    f.write(response.text)
    f.close()
    
  2. 使用selenium和无头浏览器。

答案 1 :(得分:0)

问题取决于您尝试搜索ID的方式,而不是

print(soup.find(id="before-appbar"))print(soup.find({"id":"before-appbar"}))

希望这可以解决问题。

相关问题