Scrapy学习笔记(一)

单细胞双胞过滤-scrublet安装 pip install scrublet ----use-pep517有如下报错,分析可知安装annoy时不会自动更新gcc的版本,centos默认是4.8.5。pip install scrublet ----use-pep517 仍然报错,但似乎不影响使用,提示Successfully installed。打开终端,进入Python环境,输入以下代码,查看Python安装位置。暂时还没尝试是否存在问题,如果存在问题,降级scrublet版本。包的开发依赖的是比较低版本的numpy,会用到。 阅读详情

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

建立一个最简单的工程

这是固定步骤。

scrapy startproject tutorial

第一个Spider

在spider文件夹下建立py文件 quotes_spider.py。

import scrapy

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)

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

  1. name在工程内唯一,定义爬虫名。
  2. start_request()方法返回Request对象,
  3. parse()方法用于处理response,也能生成新的Request请求。
  4. 这里scrapy.Request是被自动调度的对象,其中指定了url和返回response后的回调函数parse。如果没有重写start_requests方法,那么会有一个默认的方法,这时候就只用写一个start_urls的list就行了,parse会被调用处理这些url。

运行Spider

scrapy crawl quotes

之后就能看到文件夹下面会出现几个爬取的网页。到此为止,下载的网页只是简单地保存成了文件,还没有进行处理。

shell中简单取出数据

使用scrapy的shell可以进行一些即时交互,便于调试和学习。

scrapy shell "http://quotes.toscrape.com/page/1/"

之后在shell中输入命令就能马上得到一些结果。css、xpath选择器是最常用的(re()正则方法也很重要),具体的语法用到的时候再学就行。实在摸不着头脑最好对网页和xml的结构进行一下复习。

css:

>>> response.css('title')
[<Selector xpath='descendant-or-self::title' data='<title>Quotes to Scrape</title>'>]

xpath:


>>> response.xpath('//title/text()').get()
'Quotes to Scrape'

Spider中取出数据

修改parse()方法,返回一个dict(parse()方法只能返回新的request、dict对象或者是None,如果返回不允许返回的类型,就会报错,具体可以参看文档),注意用yield关键字(与generator语法有关)。

  def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('small.author::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }

到这里我们虽然的到了一些数据,但是我们想持久化存储这些爬到的数据该怎么办?首先试试json存一下(其实还有个jl文件,好奇可以搜索一下,是一个流类型的json格式):

scrapy crawl quotes -o quotes.json

然而,我们又会想,输出一个json就完事了?我们如果想对数据进行一些加工该怎么办呢?这时候pipelines.py就派上用场了。

跟踪超链接

urls太不方便!每个网址都放在list中,我如果爬一万个网页这是不方便的。假设网页里已经有了超链接(例如a标志),那么先把它取出来吧!

在shell中可以实验:

>>> response.css('li.next a::attr(href)').get()
'/page/2/'

把parse()方法修改成下面的样子:

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('small.author::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }

        next_page = response.css('li.next a::attr(href)').get()
        if next_page is not None:
            next_page = response.urljoin(next_page)
            yield scrapy.Request(next_page, callback=self.parse)

注意这里urljoin()是把相对url转换成完整的url。然后由于这个yield,每个request完成后,下一个request就会加入调度中了。
凡是固定的语法都可以进行精简,对于框架来说自然是越简单越好,下面也能理解成是一个语法糖:

        if next_page is not None:
            yield response.follow(next_page, callback=self.parse)

命令行工具传参数之类的具体可以参看文档。另外yield返回的dict完全可以用一个返回dict的函数替换,这样可以使代码更加模块化。

总结(一)

世界上最好的教程就是官网的文档,无论学习什么框架,如果仅仅从网上随便搜到的教程上学习,一方面别人写的不一定好理解,另一方面框架的时效性是非常强的,如果看的是旧文档,最后发现版本和自己使用的不对头是非常令人扫兴的。

基于osgEarth的二维态势中时变对象的绘制方法 在态势系统中,卫星、飞机的轨迹、覆盖等的几何数据随时间改变,称之为时变对象。在以OSGEarth实现的二维态势中,如果利用OSGEarth的预定义线、面类型处理这种几何数据的动态改变,则导致效率极具降低。介绍了此问题并给出解决技巧。 阅读详情

相关推荐

【爬虫】Python实现爬取淘宝商品信息(超详细)

项目基于Python的第三方库Selenium模拟浏览器运行、PyQuery解析和操作HTML文档,获取淘宝平台中某类商品的详细信息(商品标题、价格、销量、商铺名称、地区、商品详情页链接、商铺链接等),并基于第三方库openpyxl建立、存储于Excel表格中。# 全局变量count = 1 # 写入Excel商品计数# 启动ChromeDriver服务# 关闭自动测试状态显示 // 会导致浏览器报:请停用开发者模式# 把chrome设为selenium驱动的浏览器代理;# 窗口最大化。

qq_46315152的博客 4万+

Python爬虫之scrapy的概念作用和工作流程

scrapy的概念和流程 学习目标: 了解 scrapy的概念 了解 scrapy框架的作用 掌握 scrapy框架的运行流程 掌握 scrapy中每个模块的作用 1. scrapy的概念 Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。 Scrapy 使用了Twisted['twɪstɪd]异步网络框架,可以加快我们的下载速度。 Scrapy文档地址:http://scrapy-chs.readthedocs.io/zh_CN/1.0

不一样的花朵的博客 1578

如何将rvt(BIM)转换为点云格式

1、为什么将BIM转换为点云格式? 如何使设计BIM与真实场景进行配准,分析在建、未建、已建构建的情况,真实场景是通过点云生产的,和点云配准需要相同的格式。 2、如何转换? 实用工具revit,转换过程如下图,这样就可以转换成三角网格形式。 3、FBX还需要进行一次转换,即转换成点云常用的类型,如bin\ply\pcd等格式。 需要软件cloudcompare.exe,软件下载地址百度云 链接:https://pan.baidu.com/s/1pflcKNc04loBnS1yKR39hw 提取码:obaf

self_Name_的博客 4489

Scrapy基础入门学习

Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

m0_57376367的博客 643

软件自动化测试脚本如何编写,编写自动化测试脚本的几点注意事项

我们需要自动化测试脚本的原因:1、验收测试是一项非常复杂和费力的被用来确保软件质量的环节。它的目的就是使软件能得到充分运行并且能使其符合原始需求。2、测试的目的无非就是满足了两个结果:测试通过或测试不通过。为了能实现每个测试结果,必须要明确每个测试用例。并且对于整个系统而言在合同中必须定义测试用例的失败标准,而且这个失败标准数必须是可接受的。3、测试用例的通过条件必须有一个清晰的标准,标准可以被定...

weixin_39575775的博客 2251

电路抗干扰原理及应用(1)

电路抗干扰原理——介绍干扰源、干扰途径、抗干扰技术(接地技术)

qq_34758408的博客 2061

scrapy框架学习总结

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

qq_45981086的博客 6856

docker安装fastdfs+nginx配置

docker安装fastdfs+nginx,实现图片或文件的上传与下载

weixin_47325126的博客 2192

scrapy笔记

scrapy的安装,创建与基本使用;crawlspider爬取读书网

weixin_48023487的博客 1018

Docker入门教程:在腾讯云轻量服务器上部署你的第一个容器化应用 (2025)

还在为“在我电脑上明明是好的”而烦恼?本篇Docker入门教程,用通俗易懂的比喻解释镜像、容器的核心概念,并手把手带你在腾讯云轻量服务器上,从运行Nginx到编写Dockerfile打包自己的Python应用,轻松掌握容器化部署。

Clownseven的博客 2084

C#构建高精度预测模型:从数据预处理到模型部署的实战指南

【代码】C#构建高精度预测模型:从数据预处理到模型部署的实战指南。

墨夶的博客 1261

Scrapy知识大全|基础知识详解|案例实战演练

框架可以说是一个项目的半成品,这个项目的半成品需要被集成各种功能并且具有较强的通用性。特性:集成各种功能;通用性初期如何学习框架?只需要学习框架集成好的各种功能的用法即可!前期切勿钻研框架的源码!Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy作为一个框架,任何人可以按需修改。优点:简单,便捷缺点:局限性强只可以将数据存储到文本文件无法写入数据库。

qq_47480932的博客 833

[Dify实战] 解决 Dify 导入 DSL 文件时报 “DSL 版本差异” 的兼容性问题

摘要:本文针对Dify开发者在导入.dsl文件时遇到的版本警告提示问题,分析其根源在于DSL文件与当前系统版本不一致。解决方案是通过导出当前Dify应用的DSL文件查看版本号,手动修改待导入文件的version字段以匹配。文章详细说明了操作步骤,并给出使用专业编辑器、避免修改其他字段等实用建议,帮助开发者规避版本不兼容问题,提升多模态AI应用开发效率。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 961

Scrapy学习笔记-Selectors一

抓取网页时,最需要执行的任务是从HTML源中提取数据。 有几种库可以实现此目的,例如:BeautifulSoup是在Python程序员中非常流行的Web抓取库,它基于HTML代码的结构构造一个Python对象,并且还可以很好地处理不良标记,但是它有一个缺点:它很慢。lxml是具有基于ElementTree的pythonic API的XML解析库(它也解析HTML)。 (lxml不是Python标准...

肥叔菌的博客 9371

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

scrapy学习笔记(一)

scrapy学习笔记scrapy简介scrapy结构各组件介绍window下安装方法第一个scrapy项目1、创建项目:目录结构说明创建爬虫items.py声明变量爬虫代码设置settings设置piplines.py爬取多个页面预告 scrapy简介 Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,...

qq_44639286的博客 710

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Scrapy框架学习笔记(一)

Scrapy框架学习笔记(一) 下面是我通过网课学习的scrapy框架的笔记,想分享一下,也记录一下自己的成长 安装 我是通过pychram来安装scrapy的,打开pychram的setting 代码里import scrapy 没有报错就代表成功了 创建scrapy项目 点开pychram下面的Terminal这个框(不懂这个框什么, 应该是和cmd命令一样的黑框那个意思。)输入scrap...

abao_gege的博客 295

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

scrapy爬虫入门学习笔记(一)

scrapy爬虫入门学习笔记(一)scrapy框架 ,爬取腾讯社招信息

qq_42016338的博客 403

scrapy学习笔记一

scrapy学习笔记 下面以爬取1919网站为例子,完成对一整个网站数据爬取的scrapy项目创建。 创建一个scrapy文件 在任意目录下输入命令 scrapy startproject OneNine (文件名) 将会得到如下目录的文件 OneNine/ scrapy.cfg # 部署配置文件 OneNine/ ...

weixin_30825581的博客 200

【Scrapy爬虫学习笔记一】安装scrapy

安装scrapy我的测试环境是centos6.5升级python到最新版的2.7,下面的所有步骤都切换到root用户由于scrapy目前只能运行在python2上,所以先更新centos上面的python到最新的 Python 2.7.11, 具体方法请google下很多这样的教程。先安装一些依赖软件1 2 3 yum install python-devel yum install libffi...

HFUT_yezi的专栏 320

Scrapy学习笔记一

scrapy新建  scrapy startproject 项目名字 新建后的目录: scrapy.cfg:项目的配置文件 tutorial/:项目的Python模块,将会从这里引用代码 tutorial/items.py:项目的items文件 tutorial/pipelines.py:项目的pipelines文件 tutorial/settings.py:项目的设置文件 tu

zcy0xy的博客 580

Scrapy 学习笔记(一)

##安装Scrapy 框架 1.安装'scrapy':通过`pip install scrapy`即可安装。 2.如果在Windows安装,则还需要安装`pypiwin32`,安装方式为`pip install pypiwin32`。 3.如果在Ubuntu安装,则需要安装一些第三方库:`sudo apt-get install python-dev python-pip libxml12-dev libxslt1-dev zliblg-dev libffi-dev libssl-dev`。 ##.

Blancky的博客 274

Scrapy 学习笔记(一)

0x00 Scarpy的安装 Ubuntu 9.10及以上版本 不要 使用Ubuntu提供的 python-scrapy ,相较于最新版的Scrapy,该包版本太旧,并且运行速度也较为缓慢。 正确的安装方法: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 627220E7 echo 'deb htt

后天的博客 619

SCRAPY_学习笔记(一)

SCRAPY使用 第一篇笔记是一份scrapy中的格式的简单整理。大部分都是伪代码,用来快速回忆每个部分的作用。具体代码会在第二篇里编写。自学可能有些错误,欢迎补充。 内容列表 安装 cmd命令 目录结构 代码编辑 item.py myspider.py piplines.py setting.py scrapy安装 pip install scrapy cmd命令 项目创建 scrapy startproject hellospider 项目启动 scrapy crawl hellos

jasonasuka的博客 318

python scrapy菜鸟教程_scrapy学习笔记(一)快速入门

安装ScrapyScrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv、json等文件中。首先我们安装Scrapy。pip install scrapy在Windows上安装时可能会出现错误,提示找不到Microsoft Visual C++。这时候我们需要到它提示的网站visual-cpp-build-tools下载VC++ 14编译器,安装完成...

weixin_29061997的博客 2102
上一篇: C++ 10进制与N进制的转换
下一篇: PyTorch学习笔记(一)
「已注销」
博客等级 码龄10年 2粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值