python爬虫,获取到js怎么处理

问题遇到的现象和发生背景

获取csdn热门文章
####

问题相关代码,请勿粘贴截图

request = ue.Request(
        url='https://so.csdn.net/so/search?q=java&t=all&u=&urw=',
        headers={
            'User_Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
        }
    )
    response = ue.urlopen(request).read().decode('utf-8')
    print(response


运行结果及报错内容

运行后返回response中只有js ,没有网页源码内容

我的解答思路和尝试过的方法
我想要达到的结果

怎么才能让返回的js变成网页的源码,以便于用xpath去读取里面的内容

这个网页中的内容是不是通过js代码读取外部json数据来动态更新的。
requests只能获取网页的静态源代码,动态更新的内容取不到。
对于动态更新的内容要用selenium 来爬取。

或者是通过F12控制台分析页面数据加载的链接,找到真正json数据的地址进行爬取。

在页面上点击右键,右键菜单中选 "查看网页源代码"。

img


这样看到的才是网页的静态源代码。
如果这个网页的静态源代码中有你需要爬取的内容,就说明该页面没有动态内容,可以用requests爬取。
否则就说明该页面的内容是动态更新的,要用selenium 来爬取.

你的请求响应如下,这个应该被反爬了,你加个cookies进去试试

img

页面是js动态加载的,你爬下来就是加载前的样子,核心内容在JS里,F12去分析网站拿到的资源基本上就能找到你想要的内容。比如你这个链接的主要内容在

https://so.csdn.net/api/v3/search?q=java&t=all&p=1&s=0&tm=0&lv=-1&ft=0&l=&u=&ct=-1&pnt=-1&ry=-1&ss=-1&dct=-1&vco=-1&cc=-1&sc=-1&akt=-1&art=-1&ca=-1&prs=&pre=&ecc=-1&ebc=-1&urw=&ia=1&platform=pc

很明显是json格式,用JS动态加载成页面的。