用 python 爬取 gutenberg 上的英文科幻小说

news/2024/7/7 7:34:29 标签: python, 爬虫

gutenberg地址:http://www.gutenberg.org/

前记:对象的作业是翻译还没有被翻译过的英文科幻小说。百度搜索无望,借助了伟大的python和伟大的gutenberg下载了1000多篇英文科幻小说。下一步希望能通过程序判断这些文章是否被翻译过。

学习到的内容:

1. 在寻找提取链接的规律时,需要多思考。最初选择直接提取链接,遇到很多问题。后来选择直接提取编号,就变得容易很多。

2. 正则表达式的使用还需加强。

3. 注意 try… except… 的使用。

python"># -*- coding: utf-8 -*-
"""
Created on Wed Feb 15 12:04:26 2017

@author: Wayne
"""

import urllib2, re

url = "http://www.gutenberg.org/wiki/Science_Fiction_(Bookshelf)#B"
# gutenberg上科幻小说类目地址

content = urllib2.urlopen(url).read()
# 读取类目网页内的信息

relink = 'title="ebook:(\d{1,10})">'
# 设置正则表达式

links = re.findall(relink, content)
# 通过正则表达式提取网页内的书籍编号,生成列表links

x = 0
# 计数符号,用于书籍命名和程序输出

book_url_list = []
# 初始化列表,用于存放每本书的链接

for link in links:
# 遍历书籍编号
    link = 'http://www.gutenberg.org/ebooks/'+link
    # 将书籍编号和地址头合并为有效链接
    book_url_list.append(link)
    # 将有效链接追加到书籍链接列表中

for i in book_url_list:
# 遍历链接列表
    x = x+1
    # 计数
    try:
    # 正常运行
        html_doc = urllib2.urlopen(i).read()
        # 读取书籍链接内容
        f_url_h = html_doc.find('<a href="//')
        f_url_t = html_doc.find('" type="text/html;')
        f_url_a = "http://"+html_doc[f_url_h+11 : f_url_t]
        # 得到书籍内容页面的链接        
        a = urllib2.urlopen(f_url_a).read()
        # 读取书籍内容
        
        f_name_h = html_doc.find('<h1 itemprop="name">')
        f_name_t = html_doc.find('</h1>')
        b = html_doc[f_name_h+20 : f_name_t]
        # 得到书名 
        
        fout = open('SF%d%s.html' %(x,b), 'w') 
        # 建立并打开以书名命名的html文件
        fout.write(a)
        # 将书籍内容写入文件
        fout.close()
        # 关闭文件
        print "Download success %d: %s" %(x, b)
        # 打印下载成功信息:包含编号和书名
    except:
    # 若发生错误,则直接略过,进行下一个链接循环
        print "Download failed %d" %x
        # 打印失败信息和编号
        continue

 

转载于:https://www.cnblogs.com/wnzhong/p/6401415.html


http://www.niftyadmin.cn/n/1791397.html

相关文章

后台面试类型总结

Java基础 基础java中高级芋道源码综合反射面试题java面试题算法 BAT算法综合 Spring框架 知识点: 事务机制 Spring面试题后端开发面试题阿里电面试题JVM 多线程 异步IO Netty数据库相关 MySQLmysqlmysqlHibernateMybatis数据库锁计算机网络 设计模式 单例模式工厂模式观察者模式…

支付宝网站支付封装

# 使用第三方sdk -基于官方的api封装的 -pip install python-alipay-sdk --upgrade 1 目录结构 -send_ali_pay ---------包 -__init__.py -pem -----------文件夹 存放公钥私钥 -alipay_public_key.pem --------存放公钥 -alipay_private_key.pem …

实在RPA给你展示什么是真正的OCR识别技术

你知道什么是OCR识别技术吗&#xff1f;OCR &#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;是指电子设备&#xff08;例如扫描仪或数码相机&#xff09;检查纸上打印的字符&#xff0c;通过检测暗、亮的模式确定其形状&#xff0c;然后用字符…

idea jni

javah -jni -classpath (搜寻类目录) -d (输出目录) (类名)nm -D **.soidea setting $JDKPath$/bin/javah -jni -classpath $OutputPath$ -d $FileDir$ $FileClass$ $ProjectFileDir$

实在智能RPA机器人:你相信光吗

我们是通过什么了解这个世界的&#xff1f; 视觉是人类与生俱来的东西&#xff0c;也是人类认识世界、了解世界的基础。面对眼前光怪陆离的世界&#xff0c;我们既陌生又熟悉&#xff0c;因为不知到它到底是如何形成的&#xff0c;但又每天生活在这个世界中。 你相信光吗&…

sql server xml 截断

c#读取 sql生成的xml时&#xff0c;发生阶段。 加,type 解决转载于:https://www.cnblogs.com/terryzh/p/6403581.html

iOS 安装包瘦身 (上篇)

本文来自网易云社区作者&#xff1a;饶梦云1. 安装包组成谈到 App 瘦身&#xff0c;最直接的想法莫过于分析一个安装包内部结构&#xff0c;了解其每一部分的来源。解压一个 ipa 包&#xff0c;拿到其 payload 中 app 文件的数据&#xff0c;整理归类后其大致如下&#xff1a;E…

实在智能RPA@你,那些被电商RPA“淘汰”的电商运营去哪儿了?免费RPA机器人告诉你

”RPA大规模应用之后&#xff0c;有多少人会因此失业&#xff1f;他们会去向哪里&#xff1f;“&#xff0c;这是很多来自财务、人力、电商等行业的朋友经常会问到的问题&#xff0c;但是事实果真如此吗&#xff1f; 在这个被焦虑笼罩的年代&#xff0c;诸如此类的信息充斥了我…