打开搜狗微信,在搜索框中输入“南中医青年”,这里就搜索到了南中医青年发布的公众号文章结果
但是在浏览器中复制浏览器地址后再度输入,界面会在“搜索公众号界面”,而非“搜索文章”界面,因此我利用Selenium库模拟输入“南中医青年”,点击“搜索公众号文章”来获得目标内容。
然后再获得网页源码,这边有一个坑,在利用Selenium库获得源码的过程中,需要使用time.sleep来让程序暂停一段时间,可以理解成加载网页,我设置成了3s,大家可以根据自己的网速以及电脑流畅度等设置时间,
习惯性按F【12】打开浏览器的开发者工具,利用选择工具点击列表中的文章标题定位对应源码位置
网页源码中对应的信息大略如下,href后的数据就是对应的网址信息。但是要注意这边不太完整,需要在最前面加上“https://mp.weixin.sougou.com/”,把鼠标放在上面就可以看到完整版的网址信息,并且为了方便,我把整个浏览器隐藏掉了。
这里还需要分页输出,我们定位到链接地址后观察发现它的规律是“字符串page + 页数 + 字符串”,所以我利用字符串的拼接来得到这个地址关系:
我利用的是select函数,观察可知我们希望的链接内容在class为“txt-box”分区下的a标签中,获得链接之后利用append()函数存放在全局变量article_url列表中。
首先输入我们获得的链接地址尝试后发现,在每篇文章后还会出现一次公众号的地址,因此只有在列表中的奇数项才是我们需要的文章地址
一个是后续的跟进,我对没有特定标签指明的文字,也就是标签外饿的文字爬取仍然不熟练,在xpath外最多的还是用正则表达式进行爬取。
这是利用Selenium库模拟打开浏览器,然后模拟点击登录按钮,在time.sleep()后扫码登录界面,这样就可以通过未登录时只能看10个界面的限制,但是我在模拟点开时遇到了一些问题,模拟点击没有效果,后续如果想要爬取这10页以外的内容就需要登录,所以后续也需要发文章讲一下对这些按钮的点击过程中常见的一些问题。
cookie可以理解为输入账号密码过后,无论如何切换界面,做什么操作都会被记录其中,在下篇文章中改进登录操作。
在我的首次输入时可以正常读取界面,但是当爬取频率过高就会被识别,需要用验证码
我在查阅后了解到“超级鹰”软件可以相应地进行识别,后面更新。