首页 > 编程语言 >Python 爬虫:爬《权力的游戏》中英对照版

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

时间:2022-11-27 11:08:11浏览次数:55  
标签:www title Python rstr 爬虫 url 中英对照 html tingvoa


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

 

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

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

Python 爬虫:爬《权力的游戏》中英对照版_文件名_02

程序的功能就是要取每页特定部分的内容,剔除掉不要的内容,对取到的内容加工写入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

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

看爬下的结果:

Python 爬虫:爬《权力的游戏》中英对照版_文本文件_03

Python 爬虫:爬《权力的游戏》中英对照版_文本文件_04


标签:www,title,Python,rstr,爬虫,url,中英对照,html,tingvoa
From: https://blog.51cto.com/fangkailove/5889819

相关文章

  • python IDLE清除窗口内容和new file里代码加行业的操作
    这个其实比较简单,主要是从网上下载好ClearWindow.py这个文件,然后把文件放到./Lib/idlelib下面,同时打开该文件夹下config-extensions.def文件,在文件尾加入下述代码[ClearWi......
  • Python项目依赖包生成requirements.txt
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Python编程特殊小技巧汇集(一)
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • python 字符串变量替换
    >>>ac="mmjj">>>aaa="adfbvbad{}".format(ac)>>>aaa'adfbvbadmmjj'>>>aaa="adfbvbad{}aaa{}".format(ac)Traceback(mostrecentcalllast):File"<pyshell#......
  • 欧陆词典生词本导入不被单词生词本(Python)
    欧陆词典生词本导入不被单词生词本(Python)前言众所周知,不被单词作为背单词软件体验很不错,而且还可以用户自定义导入生词本(支持.txt格式)。但不背单词无法在其他场景提取默......
  • python 汉字GB2312 %url编码
    importurllib#汉字转编码aa=urllib.parse.quote("张三".encode('gb2312'))#编码是GB2312print(aa)aa=urllib.parse.quote("格力塔扇".encode('gb2312'))print(aa)......
  • 【转载】给文件批量改名的python脚本
    https://www.bilibili.com/read/cv16146757 确认py版本:2.7,3.6?1importos,sys,re,math,openpyxl,csv23i_want_file=re.compile(r'.+\.mp4')45pa......
  • python爬虫——站酷数据获取
    1.站酷数据获取其中需要注意,本文使用了IP代理,以及不同的作品类型,他们详情页url拼接方式不同importrandomimporttimeimportdatetimeimportrequestsimportthrea......
  • Python global和nonelocal关键字详解
    本篇文章只是为了自己做个记录,记录一下这两个关键字的详细用法和区别,将会引用别人的文章,具体可见如下三篇:变量作用域Python中的作用域、global与nonlocal详细举例......
  • 在腾讯云上部署python flask项目
    最近在腾讯云上折腾了好久的docker,因为不熟悉用的挺混乱。今天总算把2个项目部署到腾讯云上去了,总结下思路,以防以后踩坑我的腾讯云使用的是CentOS7.6,最低档次的机器 本......