假设我们拿到一份需要抓取的公众号的全部微信号信息,就可以对应地批量打开每个公众号的页面,抓取相关的数据。例:
解释:前13行依旧是模拟登陆账号密码,15行的命令为打开前图所示的装满微信号的文本文档,第16行f.readlines(),是读取整个文件所有行,以列表的形式保存在变量txt中,每行作为一个元素(参考
python的三个读
)。接下来开始循环读取该列表中的内容了(参考for循环的用法),第18行len(txt)是获取该列表的长度,设置一个变量i作为序号,范围为从第一个元素到最后一个元素(实际序号i的值是从0到len(txt)-1),第20行txt[i]就是获取第 i 个元素的内容,前面再补全链接就是这个公众号的新榜数据网址了。try:except:continue语句为后面避免出现个别公众号信息页面打不开的bug,提前补全了逻辑,即如果出现意外编译不会停止报错,而是执行except后面的指令,继续continue循环,方便起见就不一步步演示采坑过程了。
爬取信息并保存到表格里
先参考学习一下读写csv的方法:
思路:在前面的基础上先创建一个csv表格,然后先写入表头(公众号、微信号、阅读数...),然后将上一篇匹配抓取到的数据逐行写入到csv表格中。完整代码如下:
解释:开头需要importcsv才能应用python自带的csv模块,第20行是新建并打开一个抓取结果.csv文件,这里用追加内容的写入模式'a'(参考python文件读写方式),至于newline=''是因为csv标准库写入时会自动换行,如果不加这个东西,当我们写入到表格的时候,就会出现空行。第21行是定义一个变量进行写入,将文件变量out传进来,dialect='excel'是定义文件的类型为excel;第22行csv_write.writerow(数组)就是将一个数组按行写入csv表格文件里;同理第45行,在接下来循环的每一个抓取过程中,将公众号名称、阅读数等数据按顺序存到数组stu里,再写入csv表格。注:account_text[4:]后面加[4:]意思是截取该变量的第四个字符串以后的内容,进一步提炼抓取到的核心数据(例如微信号:rmrbwx只保留输出后面深色的英文字符)。
上述代码运行后输出的csv表格数据如上图,但是该结果仍不完美,为了方便计算头条总阅读数、平均阅读数等数据,我们还必须把以数组形式输出的7天阅读数,转化成数值并加以运算,下面一篇会继续用numpy库,做一个简单的计算,并将全部代码打包成一个在非python环境下运行的可执行程序.exe。
领取专属 10元无门槛券
私享最新 技术干货