ajax抓取网页内容(今天终于把爬虫的Ajax请求搞懂了文章分析及存在的问题)

优采云 发布时间: 2022-04-01 01:05

  ajax抓取网页内容(今天终于把爬虫的Ajax请求搞懂了文章分析及存在的问题)

  今天终于明白爬虫的ajax请求了

  文章目录

  一、案例分析及存在问题

  首先我们要在这个网站中爬取一些不同省份的数据,但是如果像普通的请求方式:(注意是不同省份的数据)

  只需拉出代码:

  import requests

url = 'http://www.fintechdb.cn/request/loadmore'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.41',

# 'X-Requested-With': 'XMLHttpRequest'

}

data = {

'csrf_weiyangx_token': 'a8c2eafab6bd8f2041b6c2e0c8a3811b',

'city': '台湾省,四川省',

'financing': '0',

'field': '0',

'timestart': '0',

'timeend': '0',

'offset': '0',

'sort': '1',

'order': 'desc'

}

res = requests.post(url=url, data=data, headers=headers)

print(res.status_code)

print(res)

print(res.content.decode())

  好吧,输入代码后,我认为一切都很好。谁知道呢,右键再点击运行:

  结果,我傻眼了;

  

  

  我说:哎,真奇怪,我的请求不都是返回状态码200吗?如何给我一个错误?他是否故意返回 200 让我认为请求成功?

  带着这些疑问,我打开网页,点进我的网站,发现;

  

  啊,原来网页本身的内容是错误的,看来请求是正确的。

  那么,问题又来了,请求的数据在哪里?

  显然你可以看到它

  

  真的很邪恶吗?? ?

  二、问题解决

  后来查了各种资料。. . . . .

  

  终于发现原来的原因是这个网站是用Ajax写的,

  阿贾克斯简介

  AJAX 是一种无需重新加载整个网页即可更新部分网页的技术。

  AJAX 不是一种新的编程语言,而是一种使用现有标准的新方法。

  AJAX 是一种用于创建快速和动态网页的技术。

  一句话:

  Ajax 是指无需重新加载页面即可更新部分网页,而 XMLHttpRequest 对象是实现 Ajax 的基础环节,而 XMLHttpRequest 对象是实现浏览器(Html)与数据的交互。

  回到原来的问题

  问题解决了

  我们重新抓取网页,发现,哎,确实有一个XMLHttpRequest对象对象,就是这个请求的header的参数

  

  这个好办,我们只要把这个请求的参数放到请求头里就行了,对吧?

  代码显示如下:

  import requests

url = 'http://www.fintechdb.cn/request/loadmore'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.41',

'X-Requested-With': 'XMLHttpRequest'

}

data = {

'csrf_weiyangx_token': 'a8c2eafab6bd8f2041b6c2e0c8a3811b',

'city': '台湾省,四川省',

'financing': '0',

'field': '0',

'timestart': '0',

'timeend': '0',

'offset': '0',

'sort': '1',

'order': 'desc'

}

res = requests.post(url=url, data=data, headers=headers)

print(res.status_code)

print(res)

print(res.content.decode())

  (这实际上比前面的代码多了一个请求头参数:

  'X-Requested-With':'XMLHttpRequest'

  然后就好啦~)

  果然如我所愿,终于得到了我梦寐以求的数据(^_^)~:

  

  不管怎样,至少现在没有错。

  那你现在想要那个省就可以直接修改post请求,后面就不多说了,大家就明白了。

  三、总结1、Ajax

  Ajax之前已经结束了,就是实现js和xml的异步,英文Ajax的整个流程是:

  异步 JavaScript 和 XML

  翻译;

  AJAX = 异步 JavaScript 和 XML

  也就是说,网页的呈现和数据的存储是分开进行的。JS专门负责页面的呈现,调用其他资源等功能,而对于xml,可以自己做数据的存储和传输。两者是异步的。也就是说,它们是独立进行的,互不干扰,互不相干。

  最后一次:

  阿贾克斯请求:

  AJAX 是一种无需重新加载整个网页即可更新部分网页的技术。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线