专栏名称: CSDN
CSDN精彩内容每日推荐。我们关注IT产品研发背后的那些人、技术和故事。
目录
相关文章推荐
新浪科技  ·  【#抖音将重点打击以AI押题为噱头的虚假营销 ... ·  13 小时前  
虎嗅APP  ·  暴跌的榴莲 ·  2 天前  
雷科技  ·  USB-C,太乱了!!! ·  2 天前  
新浪科技  ·  【#iPhone17有望支持45W无线充电# ... ·  2 天前  
51好读  ›  专栏  ›  CSDN

如何用 Python 爬取网页制作电子书

CSDN  · 公众号  · 科技媒体  · 2018-01-27 12:31

正文

请到「今天看啥」查看全文


食材已准备好了,可以下锅,可锅在哪里,你不能放在手里加工。程序里我们用变量、常量来盛各种数据,还有个作用域的问题,严格的厨房红案和白案是分开的,有时候砧板是不能互用的。

  • 空值:四大皆空,什么也不是,不是 0,不是长度为 0 的字符串,不是 false,什么都不是;

  • 变量:学过数学的人都应该有这个概念,反正差不多;

  • 常量:固定不变的量,比如说 π。

烹饪手法

刚查了下,我大天朝常用的烹饪手法多达 20 多种,我归纳了一下,编程大概就那么几种:

  • 数值计算——加减乘除、位移等;

  • 逻辑计算——逻辑真假判断;

  • 过程计算——循环、嵌套、递归等;

  • 数据处理——字符串、对象的操作。

菜谱与炒菜

菜都准备好了,下锅怎么炒,全靠菜谱,它就是程序,而我们按照菜谱炒菜这个过程就是程序的执行。

Python 或任何一种编程语言都是博大精深,同时又是一种技能,不可能在使用之前完全掌握,也没必要。

我们需要知道的是我们想吃什么(程序要输出什么),然后再去菜市场买时才找菜谱(搜索引擎查资料),最后按照我们的需求加工(编程)。

1.4 Python 简单实践

首先我们来写三个 Python 文件:

hello.py

——事情的处理有落点,程序执行有入口,例如:main,这个文件可以看作程序的入口。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pkg
print 'Hello World!'
pkg.test()
p = pkg.Person("Mike", 23)
p.showInfo()

pkg.py

——程序可以分块编写,这样层次更分明,易于理解和维护,我们在 pkg.py 中编写一部分功能,作为演示模块。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
def test():
   print "Here is pkg's test"
class Person(object):
   def __init__(self, name, age):
       self.name = name
       self.age = age
       pass
   def showInfo(self):
       print self.name
       print self.age

init.py

——这是一个空文件,也可以写代码,表明当前路径是包。

接下来,我们来运行一下:

python hello.py

显示结果如下:

Hello World!
Here is pkg’s test
Mike
23

我们运行了 hello.py 文件,然后 hello.py 导入了包 pkg;包 pkg 定义了一个方法和一个类,我们在 hello.py 文件里面调用了外部的方法和类。

二、使用 Scrapy 抓取电子书

2.1 写在爬取数据之前

虽然我们这里的数据都是从公开的网络获取,但也不能确定其版权问题,因此获取的数据仅用于编程练习,严禁分享或用于其他用途。

好了,现在我们找一个在线看书的网站,找一本书把它下载到本地。首先,我们准备下载工具,就是 Python 的爬虫框架 Scrapy。

2.2 Scrapy 安装

安装完 Python 后可以用以下的命令按照 Scrapy,有些版本的 Python 没有带 pip 需要手动安装。

pip install scrapy

pip 是 Python 的包管理器,大量的第三方包或者说功能可以通过这个工具来管理,所谓包就是模块化的功能集合,基本的技术参考实践里面的包。

我安装成功显示如下信息:

> Collecting scrapy
 Downloading Scrapy-1.5.0-py2.py3-none-any.whl (251kB)
   100% |████████████████████████████████| 256kB 181kB/s
Collecting service-identity (from scrapy)
 Downloading service_identity-17.0.0-py2.py3-none-any.whl
Collecting parsel>=1.1 (from scrapy)
 Downloading parsel-1.3.1-py2.py3-none-any.whl
Collecting six>=1.5.2 (from scrapy)
 Downloading six-1.11.0-py2.py3-none-any.whl
Collecting w3lib>=1.17.0 (from scrapy)
 Downloading w3lib-1.18.0-py2.py3-none-any.whl
Collecting lxml (from scrapy)
 Downloading lxml-4.1.1-cp27-cp27m-win_amd64.whl (3.6MB)
   100% |████████████████████████████████| 3.6MB 142kB/s
Collecting Twisted>
=13.1.0 (from scrapy)
 Downloading Twisted-17.9.0-cp27-cp27m-win_amd64.whl (3.2MB)
   100% |████████████████████████████████| 3.2MB 169kB/s
Collecting pyOpenSSL (from scrapy)
 Downloading pyOpenSSL-17.5.0-py2.py3-none-any.whl (53kB)
   100% |████████████████████████████████| 61kB 313kB/s
Collecting PyDispatcher>
=2.0.5 (from






请到「今天看啥」查看全文