【问题标题】:requests.get() doesn't return the correct html code of the web pagerequests.get() 没有返回网页的正确 html 代码
【发布时间】:2020-03-25 20:17:51
【问题描述】:

我正在尝试使用请求和 BeautifulSoup 模块在 Python 中编写脚本,这些模块将接受域名作为输入并打印出结果数量(例如“大约 292 个结果”)。 这是我的代码的一部分:

def get_pages(domain):
    param = {'q' : "site:%s" %(domain)}
    url = "https://www.google.com/search"
    r = requests.get(url, params = param)
    h = BeautifulSoup(r.content, 'html.parser')
    print(h.prettify())

问题是输出的 html 代码不包含我需要的所有信息。但是,当我在浏览器中键入完全相同的 url 时,浏览器页面就会有它。 requests.get() 函数没有返回网页实际包含的所有信息的原因是什么?有没有办法解决这个问题?有没有其他方法可以获取 Google 显示的结果页面数量?附言我为我不完美的英语道歉,因为它不是我的母语。

【问题讨论】:

  • 实际网页在浏览器中运行 javascript 并显示结果 - 它不会包含在网站的简单 html 抓取中。使用 selenium 并驱动 Chrome 浏览器访问该页面可以是访问此信息的一种方法。
  • JavaScript。可能
  • 您可能应该使用官方搜索 API 来搜索此类内容。
  • @JohnnyWezel 提到的官方搜索 API:developers.google.com/custom-search/v1/overview

标签: python html parsing beautifulsoup python-requests


【解决方案1】:

您在手动搜索和使用requests 时没有获得相同信息的原因是,在后一种情况下,您请求的页面知道它是发送请求的机器。您可以通过研究使用所谓的无头驱动程序来解决这个问题。 This post 举了一个简单的例子,看起来很像你想要完成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多