Scrapy爬虫实践 —— 一、入门篇

  • 前言
  • 一、选择爬虫框架——Scrapy
  • 二、Scrapy安装
    • 1.引入库
    • 2.安装
    • 3.验证
  • 三、Scrapy的第一个爬虫工程
    • 1. 使用框架创建新工程
    • 2. 第一只虫
    • 3. 开门、放虫
  • 参考

前言

有朋友最近让我帮忙做个爬虫,想想也没咋做过,顺便就来补个课。本文就介绍了一下做爬虫过程中踩下的坑。


一、选择爬虫框架——Scrapy

一直都听说说Python用来爬虫是最合适的,所以当然就找了Scrapy来练手。
Scrapy基本大家想要入门都会知道,它是一个爬虫的应用框架,主要包括爬取网页、结构化解构。主要用于数据挖掘、信息处理或者历史归档。

二、Scrapy安装

我的python是在visual studio code中编写的,安装的是python3.8的版本,这部分就不赘述了。

1.引入库

Scrapy由纯python写就,因此它依赖于以下的库:

  • lxml
  • parsel
  • w3lib
  • twisted
  • cryptography and pyOpenSSL

上述库均可以直接用pip install安装

2.安装

pip install scrapy

3.验证

打开bash,进入工作区

$ scrapy
Scrapy 2.5.0 - no active projectUsage:scrapy <command> [options] [args]Available commands:bench         Run quick benchmark testcommandsfetch         Fetch a URL using the Scrapy downloadergenspider     Generate new spider using pre-defined templatesrunspider     Run a self-contained spider (without creating a project)settings      Get settings valuesshell         Interactive scraping consolestartproject  Create new projectversion       Print Scrapy versionview          Open URL in browser, as seen by Scrapy[ more ]      More commands available when run from project directoryUse "scrapy <command> -h" to see more info about a command

大功告成,安装成功

这一步执行的时候出错,VS Code的老毛病了,关掉VS Code重启一下就好了

三、Scrapy的第一个爬虫工程

1. 使用框架创建新工程

scrapy startproject quote

创建后,可以用tree命令看一下:

E:\PythonWork\Scrapy\quote>tree /f
文件夹 PATH 列表
卷序列号为 78FD-091E
E:.
│  scrapy.cfg               #爬虫配置文件
│
└─quote                     #项目python模块,可以在此引入我们的代码│  items.py           #item定义文件│  middlewares.py      #中间件文件,包含IP代理设置等可以在此文件中处理│  pipelines.py         #管道处理文件│  settings.py           #设定文件│  __init__.py         │└─spiders              #爬虫所在文件夹__init__.py

入门的场景下我们基本关注爬虫所在的文件夹即可

2. 第一只虫

在Scrapy中,爬虫是定义爬取行为和页面的一个类。应该是Spider子类并且定义初始化的请求。例如爬取的链接,以及定义如何处理分析爬取的页面的内容并解析数据。
我们在quote\spiders文件夹下创建quote_spider.py文件,文件内容如下:

# This package will contain the spiders of your Scrapy project
#
# Please refer to the documentation for information on how to create and manage
# your spiders.
import scrapy#定义我们的爬虫类,该类为Spider的子类
class QuotesSpider(scrapy.Spider): #爬虫名,项目中唯一,后续在命令行启动调用时使用name = "quotes"#返回一个请求的可迭代对象,爬虫在爬取前执行该函数def start_requests(self):#定义待爬取的链接urls = ['http://quotes.toscrape.com/page/1/','http://quotes.toscrape.com/page/2/',]for url in urls:yield scrapy.Request(url=url, callback=self.parse)#在单个爬取request执行后的处理行为, response中存储了爬取后的数据def parse(self, response):page = response.url.split("/")[-2]filename = f'quotes-{page}.html'with open(filename, 'wb') as f:f.write(response.body)self.log(f'Saved file {filename}')

parse()方法通常用来处理返回内容,将爬取的数据提取至字典,或寻找下一个要爬取的URL(通过调用Request方法进行下一步的爬取)
注意,如果提示编码错误,把中文注释删除即可

3. 开门、放虫

scrapy crawl quotes

这条命令运行名为quotes的爬虫,该名字在我们刚才添加的文件中定义了

2021-05-20 16:11:29 [scrapy.utils.log] INFO: Scrapy 2.5.0 started (bot: quote)
2021-05-20 16:11:29 [scrapy.utils.log] INFO: Versions: lxml 4.6.3.0, libxml2 2.9.5, cssselect 1.1.0, parsel 1.6.0, w3lib 1.22.0, Twisted 20.3.0, Python 3.8.10 (tags/v3.8.10:3d8993a, May  3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)], pyOpenSSL 20.0.1 (OpenSSL 1.1.1k  25 Mar 2021), cryptography 3.4.7, Platform Windows-7-6.1.7601-SP1
2021-05-20 16:11:29 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.selectreactor.SelectReactor
2021-05-20 16:11:29 [scrapy.crawler] INFO: Overridden settings:
{'BOT_NAME': 'quote','NEWSPIDER_MODULE': 'quote.spiders','ROBOTSTXT_OBEY': True,'SPIDER_MODULES': ['quote.spiders']}
2021-05-20 16:11:29 [scrapy.extensions.telnet] INFO: Telnet Password: cf9b8b15e70bb2c3
2021-05-20 16:11:29 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats','scrapy.extensions.telnet.TelnetConsole','scrapy.extensions.logstats.LogStats']
2021-05-20 16:11:30 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware','scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware','scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware','scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware','scrapy.downloadermiddlewares.useragent.UserAgentMiddleware','scrapy.downloadermiddlewares.retry.RetryMiddleware','scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware','scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware','scrapy.downloadermiddlewares.redirect.RedirectMiddleware','scrapy.downloadermiddlewares.cookies.CookiesMiddleware','scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware','scrapy.downloadermiddlewares.stats.DownloaderStats']
2021-05-20 16:11:30 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware','scrapy.spidermiddlewares.offsite.OffsiteMiddleware','scrapy.spidermiddlewares.referer.RefererMiddleware','scrapy.spidermiddlewares.urllength.UrlLengthMiddleware','scrapy.spidermiddlewares.depth.DepthMiddleware']
2021-05-20 16:11:30 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2021-05-20 16:11:30 [scrapy.core.engine] INFO: Spider opened
2021-05-20 16:11:30 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2021-05-20 16:11:30 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2021-05-20 16:11:31 [scrapy.core.engine] DEBUG: Crawled (404) <GET http://quotes.toscrape.com/robots.txt> (referer: None)
2021-05-20 16:11:31 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com/page/1/> (referer: None)
2021-05-20 16:11:31 [quotes] DEBUG: Saved file quotes-1.html
2021-05-20 16:11:31 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/page/1/>

看到这样的结果,我们就能够认为爬虫已经正常工作了。
查看我们的目录下,目录下生成了quotes-1.html和quotes-2.html

参考

  • https://docs.scrapy.org/en/latest/intro/tutorial.html

python爬虫实践 —— 一、入门篇相关推荐

  1. Python爬虫实践(入门篇)——抓取《天使降临到我身边》图片

    今天就学了一下Python爬虫,于是想实践一下.刚好一周前在B站补完番<天使降临到我身边>--里面的小学生特可爱.情节也不错,心里就比较喜欢这部漫画,所以就想扒一些图片当壁纸.刚好,Pyt ...

  2. python数据分析案例2-1:Python练习-Python爬虫框架Scrapy入门与实践

    本文建立在学习完大壮老师视频Python最火爬虫框架Scrapy入门与实践,自己一步一步操作后做一个记录(建议跟我一样的新手都一步一步进行操作). 主要介绍: 1.scrapy框架简介.数据在框架内如 ...

  3. python爬虫实践——零基础快速入门(四)爬取小猪租房信息

    上篇文章我们讲到python爬虫实践--零基础快速入门(三)爬取豆瓣电影 接下来我们爬取小猪短租租房信息.进入主页后选择深圳地区的位置.地址如下: http://sz.xiaozhu.com/ 一,标 ...

  4. Python爬虫实践-网易云音乐

    1.前言 最近,网易的音乐很多听不到了,刚好也看到很多教程,跟进学习了一下,也集大全了吧,本来想优化一下的,但是发现问题还是有点复杂,最后另辟捷径,提供了简单的方法啊! 本文主要参考 python编写 ...

  5. Python爬虫开发从入门到实战

    Python爬虫开发从入门到实战(微课版) 第1章 绪论 爬虫的主要目的是获取网页内容并解析.只要能达到这个目的,用什么方法都没有问题. 关于获取网页,本书主要介绍了Python的两个第三方模块,一个 ...

  6. Python+django建站入门篇(2):素数判断

    本文使用django框架搭建网站,运行之后,获取用户输入的整数,判断是否为素数并进行相应的提示. 本文技术要点: 1)使用django创建网站 2)了解MVC开发模式 3)设置路由 4)接收用户输入 ...

  7. python爬虫实践报告_Python 爬虫实践:浅谈数据分析岗位

    原标题:Python 爬虫实践:浅谈数据分析岗位 转自:法纳斯特 讲道理,pyspider确实是一款优秀的爬虫框架,我们可以利用它快速方便地实现一个页面的抓取. 不过带来便捷性的同时,也有它的局限性, ...

  8. python爬虫实践--晋江小说书籍分析

    系列文章目录 python爬虫实践–晋江小说书籍分析 python爬虫实践-腾讯视频弹幕分析 python爬虫实践-B站弹幕分析 文章目录 系列文章目录 目录 爬取晋江排行榜 爬取文案 其它想法 结语 ...

  9. python爬虫实践(1)爬取图片网站的高清壁纸

    python爬虫实践(1)爬取图片网站的高清壁纸 robots.txt协议: 爬取网站之前首先检查该站点根目录下是否存在robots.txt,如果存在,就会按照该文件中的内容来确定访问的范围:如果该文 ...

  10. python机器人视觉编程——入门篇(下)

    目录 1 全篇概要 2 图像的读取与运算基础 2.1图像的读取 2.1.1 从磁盘的图像(.jpg,.npg,.gif等等)读取 2.1.2 从摄像头里读取图像 2.2图像的运算 2.2.1 图像的数 ...

最新文章

  1. Oracle单实例打补丁
  2. 为什么拼多多没有购物车?
  3. 如何实现DataGridView实时更新数据【Z】
  4. nginx添加ssl证书认证
  5. 工厂设计模式----python版本
  6. Android横竖屏切换的生命周期
  7. asp.net文本编辑器FCKeditor使用方法详解 - 橙色大地 - 博客园
  8. mysql 5.7多层级json查询_MySql5.7 json查询
  9. 《学习JavaScript数据结构与算法》 第四章笔记 栈
  10. java逆向框架_JOOQ框架学习(1):逆向编译生成代码
  11. Ubuntu20.04虚拟机安装、配置、美化教程
  12. 新手看过来:示波器的工作原理
  13. MySQL varchar类型可以存储多少个汉字
  14. Python·@property属性
  15. 【转帖】lmbench的简单使用
  16. HTML5印章绘制电子签章图片,中文英文椭圆章、中文英文椭圆印章
  17. Qualcomm 音频学习一
  18. 大数据分析与挖掘期末复习
  19. SQL Server 2012内部原理及故障排除(专栏)
  20. 如何分辨IP地址的类型

热门文章

  1. python时间序列分析航空旅人_python时间序列分析
  2. C#中创建文件并追加内容和换行
  3. 整数划分问题的递归算法-c语言,简单的整数划分问题(递归)
  4. linux cd的帮助文件,linux查看命令帮助man命令详解在线手册
  5. xenserver 虚拟机扩容lvm磁盘分区的方法_Linux磁盘扩容
  6. osg-3D世界到屏幕
  7. key map 模糊查找_lua脚本语言批量删除模糊查询的key
  8. ios开发 静音键设置_合肥包河区:连夜设置三道拦水坝只为按下中考“静音键”...
  9. Objective-C利用协议实现回调函数(类似java的回调函数)
  10. centos7同一服务器安装两个或多个Tomcat