Python 爬虫:爬《权力的游戏》中英对照版

VOA英文网有中英对照版 《权力的游戏》 http://www.tingvoa.com/html/454618.html,但是只能在线看,而且每次不小段的太不方便了,想把它爬下来整理成大篇的,放到kindle上慢慢看。手工点了几页,每页复制到文本文件里,工作量太大了。于是就有了自己写个爬虫自动抓取的想法。说干就干。

http://www.tingvoa.com/html/454618.html  先分析它的HTML源:

程序的功能就是要取每页特定部分的内容,剔除掉不要的内容,对取到的内容加工写入txt文件,并抓取下一页的地址。一页一页循环抓取。。

主要代码如下:

#!/usr/bin/python
# -*- coding: gbk -*-
# by gnolux 20190524
# email: [email protected]



from urllib import request
import re

url = 'http://www.tingvoa.com/html/454618.html'
title = '权力的游戏:第001期:restart'



for page in range(0,1210):
    response = request.urlopen(url)
    html = response.read()
    html = html.decode("utf-8")


    rstr = r'(<p>.*?</p>)'
    s=re.findall(rstr,html,re.S)

    for i in range(len(s)):
        if s[i].startswith("<p>《权力的游戏》是一部"):
            s[i]=''
        if s[i].startswith("<p>背景介绍:"):
            s[i]='\n-----------------\n'
        if s[i].startswith("<p>来自"):
            s[i]=''
    #ct =  '\n'.join(s)
    title=title.split(':')[2]
    print(title)
    #print(url)
    #print(ct)
    with open('d:/%s.txt'%title, 'w') as f:
        f.write("<h>%s</h>"%title)
        f.write("<p>%s</p>"%url)
        f.writelines(s)

    rstr = r'<div id="next"> 下一篇:<a href=\'(.*?)\'>(.*?)</a>'
    s=re.findall(rstr,html,re.S)
    if len(s) == 1:
        url,title = s[0]
        url='http://www.tingvoa.com'+url
    else:
        print(ct)
        brea

上述写文件部分,没有合并到一个文本文件中,而是每个单独一个文件,是因为网页发布不是完全有序的。以章节作文件名,全爬下来后,按文件名重排序并合并,就能得到有序的完整书内容了。

看爬下的结果:

再用工具把文件合并转换成 mobi . kindle就能慢慢看了。

转载请注明: 转自https://blog.csdn.net/fangkailove/article/details/90522662

发布了181 篇原创文章 · 获赞 34 · 访问量 73万+

猜你喜欢

转载自blog.csdn.net/fangkailove/article/details/90522662