博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫实例 利用Ajax爬取微博数据
阅读量:6963 次
发布时间:2019-06-27

本文共 874 字,大约阅读时间需要 2 分钟。

随着代理IP技术的普及,爬虫的使用也变得简单起来,许多企业和个人都开始用爬虫技术来抓取数据。那么今天就来分享一个爬虫实例,帮助你们更好的理解爬虫。下面我们用程序模拟Ajax请求,将我的前10页微博全部爬取下来。

首先,定义一个方法来获取每次请求的结果。在请求时,page是一个可变参数,所以我们将它作为方法的参数传递进来,相关代码如下:
爬虫实例 利用Ajax爬取微博数据
首先,这里定义了base_url来表示请求的URL的前半部分。接下来,构造参数字典,其中type、value和containerid是固定参数,page是可变参数。接下来,调用urlencode()方法将参数转化为URL的GET请求参数,即类似于type=uid&value=2830678474&containerid=1076032830678474&page=2这样的形式。随后,base_url与参数拼合形成一个新的URL。接着,我们用requests请求这个链接,加入headers参数。然后判断响应的状态码,如果是200,则直接调用json()方法将内容解析为JSON返回,否则不返回任何信息。如果出现异常,则捕获并输出其异常信息。

随后,我们需要定义一个解析方法,用来从结果中提取想要的信息,比如这次想保存微博的id、正文、赞数、评论数和转发数这几个内容,那么可以先遍历cards,然后获取mblog中的各个信息,赋值为一个新的字典返回即可:

爬虫实例 利用Ajax爬取微博数据
这里我们借助pyquery将正文中的HTML标签去掉。
最后,遍历一下page,一共10页,将提取到的结果打印输出即可:
爬虫实例 利用Ajax爬取微博数据
另外,我们还可以加一个方法将结果保存到MongoDB数据库:
爬虫实例 利用Ajax爬取微博数据
这样所有功能就实现完成了。运行程序后,样例输出结果如下:
爬虫实例 利用Ajax爬取微博数据
查看一下MongoDB,相应的数据也被保存到MongoDB,如下图所示。
爬虫实例 利用Ajax爬取微博数据
这样,我们就顺利通过分析Ajax并编写爬虫爬取下来了微博列表。通过这个实例,我们主要学会了怎样去分析Ajax请求,怎样用程序来模拟抓取Ajax请求。

转载于:https://blog.51cto.com/14062184/2327612

你可能感兴趣的文章
(转载)IOS学习笔记15——SQLite数据库
查看>>
深入理解OSGI:Java模块化之路
查看>>
《编写高质量代码:改善Python程序的91个建议》读后感
查看>>
快速入门系列--Log4net日志组件
查看>>
站立会议第五天
查看>>
py递归
查看>>
vim常用命令
查看>>
VS CODE 快捷键
查看>>
windows7 修改环境变量 和 用不用重启电脑的讨论
查看>>
MVC Core
查看>>
每天一道LeetCode--172. Factorial Trailing Zeroes
查看>>
C#委托(delegate)
查看>>
Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比
查看>>
设计模式汇总
查看>>
LR错误整理
查看>>
[Java web]Spring+Struts2+Hibernate整合过程
查看>>
在Linux安装MySQL
查看>>
POJ 2251-Dungeon Master (三维空间求最短路径)
查看>>
PBRT笔记(14)——光线传播2:体积渲染
查看>>
Git使用教程
查看>>