百度知道数据爬取
一、背景说明
1.什么是爬虫
通过编程,模拟浏览器上网,然后让其去互联网上抓取数据的过程,我在一般都是用来爬取网上的数据玩,有时候也会用爬虫来下载图片。
2.爬虫中的矛与盾
反爬机制:门户网站通过制定响应的策略或者技术手段,防止爬虫程序进行网站数据爬取
反反爬机制:破解反爬机制
robots.txt协议:规定那些数据可以爬取,哪些不能爬取。
注意:数据不能乱爬吼,要遵循,robots.txt的协议哦[狗头]。
3.爬虫的分类
通用爬虫:抓取互联网中的一整张页面数据
聚焦爬虫:在通用爬虫的基础上,抓取页面中的特定的局部内容。
增量爬虫:检测网站中数据更新情况,只会抓取网站中最新更新出来的数据
4.爬虫流程
主要用的模块为requests,主要的流程如下图所示,我们以爬取百度搜索结果的爬虫为例来解释爬虫的运作过程。
二、百度知道数据爬取要点
1.流程解析
将特定种子短语,输入到爬取连接中,获取返回结果,并对结果进行解析保存。举例,将百度知道返回的结果进行抓取保存。
2.依赖库
使用pip安装
请在命令行中键入:
$ pip install baiduspider
3.BaiduSpider简介
BaiduSpider 的独特功能:
节省提取数据的时间,对于类似深度学习项目的数据模型建立与训练起到了良好的帮助。
精准提取数据,并删除广告。
搜索结果大而全,支持多种搜索类型,支持多种返回类型。
4.封锁ip解决方案
(1)定义:封锁IP——当计算机或系统受到外部攻击时,管理员可以通过屏蔽攻击源IP地址来抵御攻击。通过防火墙和路由器配置,可以封锁某个IP,禁止与其连接,从而达到抵御攻击的作用。但事实上大多数的攻击,管理员根本没有时间反应,一般在反应过来后系统已经崩溃。
(2)原因:百度网站的数据具有反爬取机制,防止第三方爬取百度数据
(3)解决方案:不停变换ip地址,这就需要ip地址池。目前有第三方ip地址厂商准门提供ip代理。收费标准大概再每月几十块钱。
(4)ip代理商:本方案采用青果网络。只需添加几行代码可解决。https://www.qg.net/
proxy = "https://proxy.qg.net/extract?Key=73F8B4FC&Num=1&AreaId=&Isp=&DataFormat=txt&DataSeparator=%5Cr%5Cn&Detail=0"
reponse = requests.get(proxy)
#重试机制
if ":" not in reponse.text:
for i in range(3):
print("开始重试")
reponse = requests.get(proxy)
print("ip:", reponse.text)
if ":" in reponse.text:
break
4.代码简介
代码文件baiduzhidao.py
1.获取要爬取的关键词列表
2.将关键词提交到爬取链接中
3.将爬取链接提交到ip代理中
4.返回爬取结果,保存结果