python爬虫requests返回值不完整

python爬虫遇到的问题:用request.get请求网页,为什么返回的网页数据不完整?整个html页面中有head和body,只返回了head里面的内容,body里面的内容并没有返回,具体是什么原因导致的,有什么解决办法吗?
这是网页的代码

img


这是返回的数据,只有head部分

img

刚开始以为终端接收有长度限制,于是我就输出到了一个记事本文件里,返回值依然不完整

img


这个是我的源代码

img

这个网站是用vue写的,你通过request获取的html内只有<div id="app" />,而网站内容都是通过后续js加载的。
要解决这个问题,可以使用带虚拟浏览器内核的爬虫框架,渲染这个页面,设置延迟,再进行爬取。
我对Python爬虫只有较浅的认识,如果是要爬取此类网站的数据,我会优先分析其接口调用。
但可保证上述方案是经过实践的。

动态加载的,最简单的是直接上selenium,不然就是请求图中那个连接,并记得把相关header摘下来

img

【相关推荐】



  • 你可以看下这个问题的回答https://ask.csdn.net/questions/941539
  • 这篇博客也不错, 你可以看下Python requests 请求body包含特殊字符(已解决)
  • 除此之外, 这篇博客: Python爬虫实例(二):requests模块应用,发送get/post请求,获取响应中的 发送get请求,获取响应 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    import requests
    
    url = "https://www.baidu.com/"
    response = requests.get(url)  # 发送get请求,请求url地址对应的响应
    print(response)  # 打印响应的状态码。返回<Response [200]>,<XXX> 表示的是对象
    
    # 获取响应内容,获取网页的html字符串
    # 方法一
    print(response.content)  # 返回b'<xxx> 开头的内容,是二进制字节流,中文内容都被编码过了
    print(response.content.decode())  # 把响应的二进制字节流转化为str类型
    
    # 方法二
    print(response.content.decode("gbk"))  # 如果方法一获取的内容含有乱码,则指定解码格式gbk(常用的中文字符集)
    
    # 方法三
    response.encoding = "utf-8"  # response.text容易出现乱码,故前面添加response.encoding="utf-8"
    print(response.text)

     

    以上三种response方法,一般能正确获取到响应的内容

    (1)response.content.decode() 

    (2)response.content.decode("gbk") 

    (3)response.encoding = "utf-8"

             response.text

     

    response的其他方法:

    print('response.request.url', response.request.url)  # 发送请求的的url地址
    print('response.url', response.url)  # response响应的url地址
    print('response.request.headers', response.request.headers)  # 请求头
    print('response.headers', response.headers)  # 响应头

    response = requests.get(url, headers={headers字典})

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^