一个极简的WebScraper爬取数据并用Pandas处理数据的案例

  本文使用 Zhihu On VSCode 创作并发布

  #爬虫 #python

  在逛知乎、刷微博时,我们有时候可能想要做一些批量操作,比如批量导出自己的微博,批量导出自己的知乎收藏答案等等,这个时候就是WebScraper+Pandas大显身手的时候了

  使用WebScraper爬取数据

  首选先安装WebScraper这个Chrome插件:Chrome应用商店国内浏览器插件网站

  网站的样式如下

  

  网站url的正则匹配表达式为,这里我的待读列表的分页只有0-2

  设置要抓取的站点url

  打开调试工具-WebScraper,添加新站点,输入名称和url的正则表达

  

  添加selector选择要抓取的数据

  输入id名,选择抓取的数据为Link,勾选Multiple支持多选,点击select,然后依次点击前两个标题即可全选本页的所有标题了,然后下方的点击Done selecting,一个数据抓取器就添加完成了。

  

  此时可以点击 Data preview 查看是否真的有数据被选中了,弹出如下表格就是真的创建Selector成功了

  

  开始抓取数据,并导出数据为csv文件

  先点击Scrape抓取数据,它会自动新建浏览器窗口打开指定url,模拟真人查看网页。

  如果url有点多的话,可能会稍稍要等一会。

  过一会数据就抓好了,然后可以点击Browse查看抓取到的数据,最后点击'Export data as Csv',就可以将表格数据都导出为csv文件了。

  

  导出的csv文件样式

  文件内容如下:

  

  我想将它转换成MarkDown格式的链接列表,类似下面这样,其实直接正则替换也行,但是那怎么考验真正的技术呢,所以我打算用python的库pandas来根据csv数据来导出这样的样式,这样就算以后有更复杂的场景,也都不在话下了。

  使用Pandas处理数据

  安装anaconda

  首选安装 Annaconda 这个Python集成开发软件,因为它自带了很多数据分析的模块,不用我们再去额外安装了,很省心。

  国内下载可能有点慢,推荐使用镜像源:anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

  至于安装过程中的一些配置,可以参考:【Anaconda教程01】怎么安装Anaconda3 - 知乎

  启动jupyter

  安装好了以后,直接命令行启动jupyter,然后在打开的类似页面下(建议将此页面保存为书签,方便随时写代码),就可以新建python3环境的ipynb代码了。

  Jupyter Notebook可以在网页页面中直接编写代码和运行代码,每一个Block的代码的运行结果也会直接在代码块下显示。如在编程过程中需要编写MarkDown说明文档,可在同一个页面中直接添加Block来编写,便于作及时的说明和解释。类似这样的,就是一个Block。

  

  Pandas读取csv文件并修改数据

  小笔记

  以后每次做一个小案例,都可以将一些以后可以复用的代码抽取出来,用一个标题表示用处。Obsidian仓库可将文章中的各级标题做块引用,是笔记管理的利器。为什么不用gist,因为有的时候一个代码用法可能涉及到多个类,用gist不够灵活。

  Chrome书签格式

  Python写入字符串到文件

  DataFrame做正则替换

  DataFrame截取指定行和列

  按行遍历DataFrame

  字符串做正则替换

  和DataFrame不太一样,不如DataFrame简洁

  

  参考资料

  以后每次边写笔记边搜索资料时,都可以将有用的链接贴在这里。可以用hypothes在链接网页上做高亮和标注,这样下次打开的话,也能看到之前的高亮标注,可以有效防止重复阅读。参考资料的链接格式统一为,方便正则匹配到,以后定期扫描自己的本地所有md文件里面的该模式字符串,自动生成一个chrome书签格式的链接列表,然后导入到Cubox这个书签管理神器里面,可以批量备份网页,这样就算原始链接失效了,也还有Cubox里面的备份可以看。python - 如何在pandas.Series.str.replace()中使用正则表达式 - IT工具网【python】用正则表达式进行文字局部替换_weixin_34216196的博客-CSDN博客Pandas 用户指南目录 | Pandas 中文《Python Cookbook》3rd 中文版3.0.0Pandas 数据结构 – DataFrame | 菜鸟教程用pandas中的DataFrame时选取行或列_wanglingli95的博客-CSDN博客_pandas取行正则表达式在线测试 | 菜鸟工具正则表达式 – 语法 | 菜鸟教程爬虫工具(二) webscraper 教程 (知乎案例) | 自由微信 | FreeWeChatGoogle Chrome插件下载|谷歌浏览器插件商店|谷歌浏览器下载-Chrome网上应用店手把手教你如何在 Windows 安装 Anaconda - SegmentFault 思否