本文将利用Python爬虫的几个基本库实现爬取简书最新收录的文章,并存储到txt文件中。
1.爬虫思路分析
1).简书网“最新收录”的网页界面(https://www.jianshu.com/c/bDHhpK)如下:
2).当手动预览该页面时,发现网页的地址并没有改变,因此判断该网友用了异步加载,进而打开Chorm浏览器开发者工具(F12),先刷新界面(F5),然后选择Network选项,并使用鼠标继续下滑浏览网页,发现随着鼠标下滑,产生了一些名字相似的文件:
点开其中一个加载后的文件,在Header部分可以观察到请求的URL链接:
复制这个链接(https://www.jianshu.com/c/bDHhpK?order_by=added_at&page=2)并在并在网页中打开可以看到打开的正是“最新收录”专题的第二页内容:
当修改链接中“page=num”的num(数字)即进入下一页的内容,因而构造第一层URL(假设构建100个URL,1000个,10000个也可以,但是费时间):
3).接下来就该从第一层网页中提取文章的网页链接:
当点击href标签里的链接即转到了文章所在的网页,并且发现“https://www.jianshu.com”加上href里的内容即是该文章的网页链接:
而如何获取href标签里的内容呢?有很多方法,博主尝试了用xpath和正则表达式方法提取,结果发现在这个网页中直接使用正则方法更简单,因而直接使用正则提取href里的内容:
代码中的newurl就是最终获得的文章链接。
4).接下来,就该爬取文章的标题及内容了,本人使用的方法仍然是正则,因为真的很容易:
在提取正文内容时,由于正则提取的是“
(.*?)
”内容,得到的是列表,还需用循环把内容逐行读入到txt文件中:你们可能已经看到了我用try绕过了一个问题,这主要是由于文章标题所用的文字编码含有gbk不能解析的内容,这个内容也不能被写入到txt文件。其实这个问题对于初学者的我来说经常遇到,我也看了一些方法,但都没有较好的解决这个问题(其实可能是IDE的问题,但我懒得换成pycharm,我一直用的Sublime,看着比较舒服),所以索性我就这么办了,既然有问题就跳过吧。
5).到这里就结束了,下面放上源码。
2.源码如下:
# -*- coding:utf-8 -*-
import requests
from lxml import etree
import time
import re
headers={
'Us