美文网首页
利用re、requests库爬取小说

利用re、requests库爬取小说

作者: 筱南君 | 来源:发表于2018-12-23 18:33 被阅读0次

    小编最近在练习正则表达式和requests,所以一直用这两个库爬小说。

    分析如何迭代

    爬取小说前我总是先看它章节之间是怎么迭代的。

    一般完结的小说章节与章节之间是有规律的,如图:

    第一章:

    某道祖师

    第二章:

    第三章:

    ...

    可以看出,可以直接通过改变有规律的url来迭代。

    然而有些小说因为并非完结,作者发布之后存在删改,所以他的url有可能没有规律,并不能采用前一种的方法处理。如图:

    第一章:

    某来

    第二章:

    (你们可能会问:挺正常的呀,怎么就没规律了?   表急,看官请接着看)

    我把www.shuquge.com/txt/8659/之后的内容抓取下来了:

    '2324847.html', '14771440.html', '14829888.html', '14834638.html', '14843202.html', '14854067.html', '14862724.html', '14881380.html', '15113611.html', '15175803.html', '15185704.html', '15200926.html', '15212292.html', '15215434.html', '15223608.html', '15230348.html', '15253911.html', '15259139.html', '15267536.html', '15275167.html', '15275417.html'

    只展示一部分(毕竟四百多张的小说,都贴上我怕是会被唾沫淹死的)

    可以看出,后续的都是没有规律的,我们只能把它的目录页的所有xxxxxx.html抓取出来,挨个遍历添加到url的后边就OK啦!

    调用requests、re库发起请求获取html

    先看网页是什么类型的编码(这个是utf-8的)

    为了防止反爬,伪装了个谷歌浏览器  - -!!

    html获取成功

    找到网页源代码,写正则提取

    第一种(url有规律)的网页:

    部分源码

    可以看出,我们只需要 <div class="content" id="chaptercontent">下的文本,所以我写了如下正则来提去它们:

    提取结果很正常

    符合要求

    OK!完成!

    第二种(url没有规律的网页):

    同样的查看它的编码类型(这个也是utf-8类型的)

    利用re和requests库获取html(与第一个一样)

    接下来该获取它的目录中每章的部分url了:

    没错!我又请求了一遍,但是我这次的url直接包含在函数里了,这个url是目录页面的,并不是第一章的

    结果展示:

    部分

    储存

    两者没什么区别,都是with open() as f:风格的。

    迭代

    重要的来了:
    第一种的迭代是这样的:

    直接计算章节数,range()直接添加完事儿。

    然而第二种就不一样了:

    第二种是遍历的获取的目录list。

    写到这儿可能大神看到呵呵一笑,像我一样的小白看的应该是满脑袋的问号吧,别急:

    主函数对比:

    第一种
    第二种

    可以看出,第一个套路基本没有,直接获取遍历的每一个html里的内容并储存,第二个的得跟上边的for循环结合起来看,可以看出它的url是与目录里的部分url拼接的,并不是直接遍历章节数得来的。

    充钱看小说?tan90°!!

    PS1:第一次写文章,请各位大佬不要喷的太厉害,谢谢各位大佬啦!

    PS2:坑踩的比较少,写不聊太多了,望各位看官谅解!

    相关文章

      网友评论

          本文标题:利用re、requests库爬取小说

          本文链接:https://www.haomeiwen.com/subject/vlbnkqtx.html