Python3 大型网络爬虫实战 002 --- scrapy 爬虫项目的创建及爬虫的创建 --- 实例:爬取百度标题和CSDN博客

本篇博客介绍了如何使用Scrapy框架创建爬虫项目,分别爬取百度首页标题和CSDN博客文章。详细讲解了创建Scrapy项目、设置爬虫、解析网页源代码、提取信息的步骤,并提供了运行爬虫的命令。
摘要由CSDN通过智能技术生成

开发环境

  • Python第三方库:lxml、Twisted、pywin32、scrapy
  • Python 版本:python-3.5.0-amd64
  • PyCharm软件版本:pycharm-professional-2016.1.4
  • 电脑系统:Windows 10 64位

如果你还没有搭建好开发环境,请到这篇博客


1 知识点:scrapy 爬虫项目的创建及爬虫的创建

1.1 scrapy 爬虫项目的创建

接下来我们为大家创建一个Scrapy爬虫项目,并在爬虫项目下创建一个Scrapy爬虫文件。

scrapy startproject <projectname> 

1.2 scrapy 爬虫文件的创建

cd demo
scrapy genspider -t basic <filename> <domain>

更多 Scrapy 命令的介绍请到这篇博客查看。


2 实例:爬取百度标题和CSDN博客

我们创建一个爬虫项目,在里面创建一个爬虫文件来爬取百度,并再创建一个爬虫文件爬取CSDN博客文章。


先创建一个Scrapy爬虫项目:

scrapy startproject firstDemo

输出:

D:\WorkSpace\python_ws\python-large-web-crawler>scrapy startproject firstdemo
New Scrapy project 'firstdemo', using template directory 'c:\\users\\aobo\\appdata\\local\\programs\\python\\python35\\lib\\site-packages\\scrapy\\templates\\project', created in:
    D:\WorkSpace\python_ws\python-large-web-crawler\firstdemo

You can start your first spider with:
    cd firstdemo
    scrapy genspider example example.com

D:\WorkSpace\python_ws\python-large-web-crawler>

2-1.1 使用Scrapy爬虫 爬取百度标题

创建一个爬虫文件来爬取百度

cd firstDemo
scrapy genspider -t basic baidu baidu.com

输出:

D:\WorkSpace\python_ws\python-large-web-crawler>cd firstdemo

D:\WorkSpace\python_ws\python-large-web-crawler\firstdemo>scrapy genspider -t basic baidu baidu.com
Created spider 'baidu' using template 'basic' in module:
  firstdemo.spiders.baidu

D:\WorkSpace\python_ws\python-large-web
为了在分布式爬虫项目中实现高效的URL调度去重,我们可以利用Scrapy-Redis框架所提供的组件来达成这一目标。Scrapy-Redis利用Redis数据库的特性,为Scrapy框架提供了一个强大的分布式爬虫解决方案。以下是一些关键步骤技术细节: 参考资源链接:[基于Scrapy-Redis的Python分布式爬虫毕设源码](https://wenku.csdn.net/doc/7646dnxom4?spm=1055.2569.3001.10343) 1. **调度器的实现**:Scrapy-Redis使用Redis的列表结构作为URL队列。分布式爬虫中的各个爬虫实例会连接到同一个Redis服务器,从而共享这个URL队列。当一个爬虫实例完成了对URL的爬取后,它会将新的待爬取URL推送到这个共享队列中。其他爬虫实例可以从队列中拉取新的URL进行爬取,这样就实现了高效的URL调度。在实现时,可以使用Scrapy-Redis的`RedisScheduler`类。 2. **去重规则的实现**:为了防止爬虫对同一URL的重复爬取Scrapy-Redis提供了一个基于Redis的去重过滤器。这个去重过滤器利用Redis的集合数据结构来存储已经爬取的URL的指纹(通常是一个哈希值)。在爬虫尝试爬取一个新的URL之前,它会首先检查该URL的指纹是否已经存在于集合中,如果存在,则跳过这个URL,从而避免重复爬取。在代码中,可以通过配置`DUPEFILTER_CLASS`来使用Scrapy-Redis的`RFPDupeFilter`。 3. **数据持久化的实现**:在分布式爬虫中,爬取的数据需要被持久化存储,以便后续的数据分析使用。Scrapy-Redis允许我们使用Redis数据库来存储爬取的数据项,这些数据项会被序列化并存储在Redis的键值对中。使用`Item Pipeline`可以轻松实现数据的持久化。在`settings.py`文件中,可以通过设置`ITEM_PIPELINES`来启用Redis管道,如`'scrapy_redis.pipelines.RedisPipeline': 400`。 通过上述三个步骤,我们可以利用Scrapy-Redis框架实现分布式爬虫中的高效URL调度去重。此外,为了更好地理解应用这些概念,我建议参考《基于Scrapy-Redis的Python分布式爬虫毕设源码》。这份资源不仅提供了完整的项目源码,还涵盖了项目的设计思路运行机制,是学习实践Scrapy-Redis分布式爬虫的宝贵资源。 参考资源链接:[基于Scrapy-Redis的Python分布式爬虫毕设源码](https://wenku.csdn.net/doc/7646dnxom4?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值