python - requests get不到完整页面源码

 mobiledu2502870587 发布于 2022-10-29 11:59

使用requests进行get只获取到了一部分html源码,下面是我的代码

def get_url(self,url=None,proxies=None):
    header = {
        'User-Agent' : 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Connection' : 'Keep-Alive',
        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
        }
    for prox in proxies:
        try:
            r=requests.get(url,proxies=prox,headers=header)
            if r.status_code!=200:
                continue
            else:
                print "使用{0}连接成功>>".format(prox)
                return r.content
        except Exception, e:
            return None

proxies参数是一个代理列表,这段代码会尝试使用proxies进行访问,访问成功就会返回
但是我获取到的页面源码不完整

5 个回答
  • 我来说说怎么排查吧。【老司机勿吐槽】

    1、使用chrome的network工具进行抓包(其他工具也行),对比response和你抓取的结果。如果相同,则意味着这个页面需要通过js进行渲染。

    2、如果步骤1对比后结果不一致,则考虑header内的其他字段造成的影响了。一般情况下,cookie影响访问权限,user-agent影响dom结构和内容。主要先排查这两点。(有可能会有一些奇奇怪怪的header则需要特殊处理)

    3、开代理测试请求排查访问ip被封禁等问题

    4、如果确定是js渲染的页面。解决方案有二,一是抓取api接口(需要敏锐的发现规则能力),抓包方法参考1。二是直接在服务器上进行js渲染(相关的运算),得到最终页面渲染的结果。

    2022-11-12 01:46 回答
  • 1楼回答的很清楚了,应该是网页返回是异步加载的,建议你用fiddler之类的抓包看下,是不是有异步请求!

    2022-11-12 01:46 回答
  • 抓到Ubuntuer一枚....竟然还装了主题....我就是飘过....

    2022-11-12 01:46 回答
  • 我的代码可以获取到页面的全部内容,但没有用requests的proxies参数。
    试试看不用代理能否获得完整内容呢?

    我的代码:

    import requests
    
    headers = {
            'User-Agent' : 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Connection' : 'Keep-Alive',
            'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
    }
    html = requests.get('http://www.xicidaili.com/nn/', headers=headers).text
    print html
    2022-11-12 01:46 回答
  • 存在几个原因
    1.也许有些内容是通过ajax加载的。
    所以通过requests.get是得不到全剖内容的,
    建议通过使用firebug等工具去确定是不是这样的原因。

    1. 是不是登录后才能有的内容。

    2022-11-12 01:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有