想学爬虫主要是因为算法和数据是密切相关的,有数据之后可以玩更多有意思的事情,数据量大可以挖掘挖掘到更多的信息。

之前只会通过python中的request库来下载网页内容,再用BeautifulSoup、re正则工具来解析;后来了解到Scrapy爬虫框架,现在入门先写个小小的爬虫项目,这里做个简单的总结和记录。

官方教程:https://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html(包括安装指南)

Github:https://github.com/scrapy

1. 创建项目

scrapy startproject -h
scrapy startproject scrapytutorial
cd scrapytutorial/
scrapy genspider scrapy_tutorial_spider scrapy-chs.readthedocs.io
mkdir output

2. 编写爬虫代码

# -*- coding: utf-8 -*-
import scrapy
import codecs class ScrapyTutorialSpiderSpider(scrapy.Spider):
name = 'scrapy_tutorial_spider'
# allowed_domains = ['scrapy-chs.readthedocs.io']
start_urls = ['https://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html'] def parse(self, response):
print("response.url: %s" % response.url) # 保存完整网页内容到文件
filename = response.url.split("/")[-1]
print("filename: %s" % filename)
with codecs.open("output/" + filename, "wb") as fw:
fw.write(response.body) # TODO 提取关键信息 # 遍历下一页
next_url = response.css("div.rst-footer-buttons > a::attr('href')").extract()[0]
if next_url is not None:
next_url = response.urljoin(next_url)
print("next_url: %s" % next_url)
yield scrapy.Request(next_url)

3. 启动爬取

scrapy crawl scrapy_tutorial_spider

完整爬下来有45个文件:

因为刚上手,先按下面几步走:

(1) 把某个网页完整爬下来,保存到文件
(2) 追踪链接:通过提取感兴趣的页面的链接(例如想要下一页的内容)并进行追踪,获取更多的数据
(3) 动态解析网页,只提取感兴趣的部分内容并保存

目前还不太熟悉CSS选择器以及XPath表达式,关于第(3)部提取关键信息还没做,后续将会逐渐学习和完善。

(参考官网的两个例子:tutorialQuotesBot

另外,网上有很多不错的爬虫项目,可以用来练手:32个Python爬虫项目

爬虫可能涉及到定时爬取、账号注册和登录、验证码破解等等,还是挺有挑战性的~

[爬虫] 学Scrapy,顺便把它的官方教程给爬下来的更多相关文章

  1. 小白学 Python 爬虫(33):爬虫框架 Scrapy 入门基础(一)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  2. 小白学 Python 爬虫(41):爬虫框架 Scrapy 入门基础(八)对接 Splash 实战

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  3. 小白学 Python 爬虫(34):爬虫框架 Scrapy 入门基础(二)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  4. 小白学 Python 爬虫(35):爬虫框架 Scrapy 入门基础(三) Selector 选择器

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  5. 小白学 Python 爬虫(36):爬虫框架 Scrapy 入门基础(四) Downloader Middleware

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  6. 小白学 Python 爬虫(37):爬虫框架 Scrapy 入门基础(五) Spider Middleware

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  7. 小白学 Python 爬虫(38):爬虫框架 Scrapy 入门基础(六) Item Pipeline

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  8. 小白学 Python 爬虫(40):爬虫框架 Scrapy 入门基础(七)对接 Selenium 实战

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  9. 爬虫之scrapy框架

    解析 Scrapy解释 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓 ...

随机推荐

  1. python之sqlalchemy使用

    一.介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并 ...

  2. Winzip和Winrar命令行的使用

    Winzip和Winrar除了提供丰富灵活的图形界面操作功能外,二者都还具备从命令行模式进行文件的压缩与解压缩操作功能,极大的方便了我们在批处理文件中调用压缩软件.以下给出了二者的常用命令行使用方法: ...

  3. L1正则与L2正则

    L1正则是权值的绝对值之和,重点在于可以稀疏化,使得部分权值等于零. L1正则的含义是 ∥w∥≤c,如下图就可以解释为什么会出现权值为零的情况. L1正则在梯度下降的时候不可以直接求导,可以有以下几种 ...

  4. 一个简单的3D范例,是在别人基础上面整理的。

    一个简单的范例,是在别人基础上面整理的.原来的例子,框图太乱了,没有条理感. http://pan.baidu.com/s/1eQTyGCE

  5. Python ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

    问题怎么出现的: 电脑是win8 64位,,下载了一个mysqldb 32位,http://sourceforge.net/projects/mysql-python/files/latest/dow ...

  6. C# 复杂格式多级深度XML序列化反序列化

     default.xml 文件如下: <config><partnerships>  <partnership name="Main_Listener" ...

  7. C语言的 32个关键之和9个控制语言之关键字

    auto   break  case  char  const  continue  default  do double  else  enum  extern  float for  goto  ...

  8. 1linux的基本命令

    查看命令的帮助信息man 命令名 文件操作touch 建立文件 (对于已存在文件,更新时间)cat 查看文件 (-n 自动加上行号)rm 删除文件cp 拷贝文件mv 移动/重命名文件more 分页查看 ...

  9. 计算机bit是什么意思

    bit是计算机中数据的最小单位,即二进制位,数字0和1 一个字节是八位(8个0和1 或 1 组成的一串二进制) 一个字是16位,等于2个字节 用八位二进制表示的字符叫单字节字符, 用16位二进制数表示 ...

  10. HTTP从入门到入土(4)——URI、URL和URN

    URI URI全称:Uniform Resource Identifier,中文名为统一资源标识符.用来标识唯一标识互联网上的信息资源. Web上可用的所有资源,比如html.图像.视频等,都是由UR ...