获取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数据的地址进行爬取。
在页面上点击右键,右键菜单中选 "查看网页源代码"。
你的请求响应如下,这个应该被反爬了,你加个cookies进去试试
页面是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动态加载成页面的。