在python学习之路(20):基于python网络爬虫抓取微信公众号的文章「1」

这篇文章中,我们对以下地址,进行了分析研究。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

可以得出2点结论:

1、 后面的1.html是页数,改不同的数字就是不同的页数。

2、 后面的pc_0代表不同的分类。

Pc_0-pc_20分别对应以下21个分类。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

python学习之路(19):基于python网络爬虫抓取微信公众号的文章「2」

这篇文章中,我们获取到了微信文章的六个主要信息。附上源码:

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

今天这篇文章要对上面的代码改动一下,让它能够获取上面21个分类。并且每个分类都获取前5页的文章,这个页数可以自己定义,然后把抓取的到文章存到MYSQL数据库。

一个微信文章的六个信息分别是:

1、 标题

2、 封面URL

3、 文章摘要

4、 作者

5、 发布时间

6、 文章URL

我们加一个主键ID,然后再加一个"类型"字段,然后在数据库建一张article表。主键ID设置为自增。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

然后在把21个微信文章的分类存为一个python列表:

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

因为确定分类只有21个,所以我们可以直接写一个for循环,从0-20。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

上面是循环分类,我们再获取每个分类的前五页,所以在上面的循环里再嵌套一个循环。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

上面代码里i就是分类对应的数字,page就是页数,之所以加1,是因为for循环从0开始。

接下来拼接URL。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

从上面的输出结果可以看出来,每个分类都输出了1-5页。

接下来就是把上一篇的代码放到这个循环里了。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

这里加了一行articletype=type[i]。这个得到当前的分类。

接下来就是存入数据库了。

把python学习之路(13):连接 Mysql 数据库及简单的增删改查回滚操作这篇文章的代码写进来。

先引入模块:

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

再连接数据库:

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

连接数据库的代码你可以写在代码的开头。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

然后在循环里写SQL语句。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

上面用到的3个引号是换行的意思。

执行SQL语句,顺便把上面的%号,替换成抓取到的数据。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

关闭数据库

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

上面的代码应该要用前几篇说到的异常来捕捉它,这里为了简便,就不写了。

执行完之后,看一下数据库。

python学习之路(20):基于python网络爬虫抓取微信公众号的文章「3」

已经插入成功了。

这里要注意上面的代码一定要捕捉异常。因为插入这么多条数据,可能会出错的,我上面的运气不错,没出错,一次全部插入成功。

至于怎么捕捉异常请阅读:python学习之路(16):python中的异常捕捉与异常处理

另外,上面抓取到的数据价值不大,因为上面抓取到的文章URL会过期。不知道大家有不有破解微信文章链接过期的方法。这里写这个代码只是为了练习python爬虫。

(抓取微信文章3篇完结)