【问题标题】:Python getting HTML content via 'requests' returns partial responsePython 通过“请求”获取 HTML 内容返回部分响应
【发布时间】:2015-11-17 11:31:25
【问题描述】:

我正在使用以下 3 个衬里阅读网站内容。我使用了一个没有太多内容的示例域进行销售。

url = "http://localbusiness.com/"
response = requests.get(url)
html = response.text

当您检查查看源代码时,它会返回以下 html 内容,其中网站包含更多 html。我在这里做错了吗

Python 2.7 版

<html><head></head><body><!-- vbe --></body></html>

【问题讨论】:

    标签: python python-requests


    【解决方案1】:

    尝试设置User-Agent:

    import requests
    
    url = "http://localbusiness.com/"
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',
        'Content-Type': 'text/html',
    }
    
    response = requests.get(url, headers=headers)
    html = response.text
    

    请求设置的默认User-Agent'User-Agent': 'python-requests/2.8.1'。尝试模拟请求来自浏览器而不是脚本。

    【讨论】:

      【解决方案2】:

      @jason 回答正确,所以我扩展了他的答案

      为什么会发生

      1. 通过 Ajax 调用和 JavaScript 代码更改了一些 DOM 元素代码,因此不会在您的调用响应中看到(尽管这里不是这种情况,因为您已经使用视图源 (ctrl+u) 来比较和不查看元素)
      2. 一些网站使用用户代理来了解用户的性质(如桌面用户或移动用户)并提供相应的响应(如此处可能的情况)

      其他选择

      1. 可以使用python的mechanize模块来模仿浏览器来愚弄 一个网站(当网站使用一些短的 身份验证cookie)A small tutorial

      2. 使用 selenium 实际实现浏览器

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 1970-01-01
        • 2016-05-29
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        相关资源
        最近更新 更多