第二篇:爬取百度科技风云榜
【Python爬虫实战】:爬取百度风云榜
前言:
既然是一个爬虫系列教程,那么我们肯定有一个目标范围,毕竟现在互联网中的网站实在是太多。那么作为我们实战的开篇就从百度中爬取我们未来项目中要实战的目标列表好了,后续的视频素材我们将从中选取。
本次目标:
这一次我们要采集的是百度科技风云榜 ,主要要爬取的是科技分类的软件TOP榜单,需要把科技APP相关的应用排名爬取下来,包含科技应用的百度指数,未来可以通过每天定时进行一次采集,做为热门行业的分析基本数据。
爬虫技术选型:
首先,我们需要简单了解一下目标页面是否有防爬机制。通过判断是否能够快速进行数据采集,验证方法如下:
我们尝试对同一个页面,以每秒1次的速度进行调用30次左右,每次完成之后,打印status_code和text的前100个字符串。如果返回结果无error,或500错误,那么我们可以尝试使用pyquery进行采集,如果有防爬机制,那么我们可能随机尝试,毕竟有可能花在解决防爬机制上面的时长可能比爬取数据所花的时间更多,在项目中,我们会通过使用不同的技术进行网页采集。
进入正文:
打开我们上次已经运行配置好的Python环境。需要启动编辑器,打开我们所要方问的页面地址:百度科技风云榜
现在我们开始进行尝试一下百度,这次我们选取的其实是一个非常简单的页面。
1、首先我们要加载需要的模块:request
模拟我们的浏览器信息
headers = {
# 用户代理
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
2、加载页面,判断是否加载成功
result = requests.get("http://top.baidu.com/buzz?b=1627&c=15",headers=headers)
result.status_code
3、转码
content = result.content.decode('gb2312')
4、筛选,并整理数据
items = pq.PyQuery(content).remove(".item-tr").find(".list-table>tr")
keys = []
for item in temp:
tempK = dict()
tempK['key']=(pq.PyQuery(item).find(".keyword>a:eq(0)").text())
tempK['hot']=(pq.PyQuery(item).find(".last>span").text())
5、转数据格式,并保存
keycsv=pd.DataFrame(keys)
keycsv.to_csv("baidu_top.csv")
总结:
1、采集百度风云榜只是我们第一个练手的项目,目的是为了整理后续课程所要的素材
2、百度风云榜数据的使用:可以通过每天的定时采集,把数据写到一个Excel文件当中,在累积到一定量级时,我们可以根据线性图,或直方图分析出我们想看到的数据成长指标
作者相关:
明哥较擅长PHP开发架构,Python开发。从业金融电商等领域多年经验。更新时间不定,以技术为主,不定期分享技术和人生,如果有兴趣可以关注。博客、新浪微博、简书、今日头条
微信公众号:【明哥玩编程】
本系列教程及源码地址:点击访问
最后:如果你正在学习Python的路上,或者准备打算学习Python、明哥会陪着你陪你一起共同进步!
手打不易,有用的话,请记得关注转发。