python scrapy框架

这篇具有很好参考价值的文章主要介绍了python scrapy框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

scrapy概述

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

scrapy安装

pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple

python scrapy框架,python爬虫,python,scrapy,开发语言

最开始安装了低版本 报错builtins.AttributeError: module 'OpenSSL.SSL' has no attribute 'SSLv3_METHOD' 升级到最新版本2.10.0 没有问题

scrapy使用

scrapy创建项目及结构

创建项目

scrapy startproject 项目名称

python scrapy框架,python爬虫,python,scrapy,开发语言

scrapy自定义爬虫类

创建爬虫文件

scrapy genspider 爬虫文件名称 网页地址

scrapy genspider MyTestSpider www.baidu.com

一般情况下不需要添加http协议, 因为start urls的值是根据allowed domains修改的 ,所以添加了http的话,那么start urls就需要我们手动去修改

import scrapy


class MytestSpider(scrapy.Spider):
    # 爬虫的名字 用于运行爬虫的时候 使用的值
    name = 'MyTestSpider'
    # 允许访问的域名
    allowed_domains = ['www.baidu.com']
    # 起始的ur]地址 指的是第一次要访问的域名
    start_urls = ['http://www.baidu.com/']

    def parse(self, response):
        pass

 scrapy response的属性和方法

response.text       获取的是响应的字符串

response.body     获取的是二进制数据

response.xpath    可以直接是xpath方法来解析response中的内容

response.extract  提取seletor对象的data属性值

response.extract_first 提取seletor列表的第一个值

scrapy启动爬虫程序

scrapy crawl  爬虫名称

scrapy crawl MyTestSpider

python scrapy框架,python爬虫,python,scrapy,开发语言

scrapy原理

1、引擎向spiders要url

2、引擎学将要爬取的url给调度器

3、调度器会将url生成请求对象放到指定的队列中,从队列中发起一个请求

4、引擎将请求交给下载器进行处理

5、下载器发送请求获取互联网数据

6、将数据返回给下载器

7、下载器将数据返回给引擎

8、引擎将数据给spiders

9、spiders解析数据,交给引擎,如果发起第二次请求,会再次交给调度器

10、引擎将数据交给管道

scrapy爬虫案例

创建项目

scrapy startproject movie

创建spider

scrapy genspider mv https://www.dytt8.net/html/gndy/china/index.html
import scrapy


class MvSpider(scrapy.Spider):
    name = "mv"
    allowed_domains = ["www.dytt8.net"]
    start_urls = ["https://www.dytt8.net/html/gndy/china/index.html"]

    def parse(self, response):
        pass

items.py

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class MovieItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    name = scrapy.Field()
    src = scrapy.Field()

编写管道 

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class MoviePipeline:
    # 执行之前执行
    def open_spider(self, spider):
        self.fp = open('movie.json','w',encoding='utf-8')

    def process_item(self, item, spider):
        self.fp.write(str(item))
        return item

    # 执行之后执行
    def close_spider(self,spider):
        self.fp.close()

settings.py开启管道

BOT_NAME = "movie"

SPIDER_MODULES = ["movie.spiders"]
NEWSPIDER_MODULE = "movie.spiders"


ROBOTSTXT_OBEY = True

ITEM_PIPELINES = {
   "movie.pipelines.MoviePipeline": 300,
}

REQUEST_FINGERPRINTER_IMPLEMENTATION = "2.7"
TWISTED_REACTOR = "twisted.internet.asyncioreactor.AsyncioSelectorReactor"
FEED_EXPORT_ENCODING = "utf-8"

编写爬虫程序

import scrapy
from movie.items import MovieItem

class MvSpider(scrapy.Spider):
    name = "mv"
    allowed_domains = ["www.dytt8.net"]
    start_urls = ["https://www.dytt8.net/html/gndy/china/index.html"]

    def parse(self, response):
        a_list = response.xpath('//div[@class="co_content8"]//td[2]//a[2]')

        for a in a_list:
            name = a.xpath('./text()').extract_first()
            href = a.xpath('./@href').extract_first()

            #第二页的地址是
            url = 'https://www.dytt8.net' + href

            # 对第二页的链接发起访问
            yield scrapy.Request(url=url, callback=self.parse_second,meta={'name':name})

    def parse_second(self,response):
        src = response.xpath('//div[@id="Zoom"]//img/@src').extract_first()
        # 接受到请求的那个meta参数的值
        name = response.meta['name']

        movie = MovieItem(src=src, name=name)
        # 返回给管道
        yield movie

运行并查看结果

进入spider目录下,执行 scrapy crawl mv

python scrapy框架,python爬虫,python,scrapy,开发语言文章来源地址https://www.toymoban.com/news/detail-683194.html

到了这里,关于python scrapy框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Scrapy:Python中强大的网络爬虫框架

    在当今信息爆炸的时代,从互联网上获取数据已经成为许多应用程序的核心需求。Scrapy是一款基于Python的强大网络爬虫框架,它提供了一种灵活且高效的方式来提取、处理和存储互联网上的数据。本文将介绍Scrapy的主要特性和优势,以及如何使用它来构建强大的网络爬虫。

    2024年02月19日
    浏览(40)
  • Python爬虫之Scrapy框架系列(23)——分布式爬虫scrapy_redis浅实战【XXTop250部分爬取】

    先用单独一个项目来使用scrapy_redis,讲解一些重要点!

    2024年02月16日
    浏览(36)
  • Python爬虫之Scrapy框架系列(21)——重写媒体管道类实现保存图片名字自定义及多页爬取

    spider文件中要拿到图片列表并yield item; item里需要定义特殊的字段名:image_urls=scrapy.Field(); settings里设置IMAGES_STORE存储路径,如果路径不存在,系统会帮助我们创建; 使用默认管道则在s

    2024年02月10日
    浏览(36)
  • 【Python爬虫开发基础⑭】Scrapy架构(组件介绍、架构组成和工作原理)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 💡 往期推荐 : ⭐️前面比较重要的 基础内容 : 【Python爬虫开发基础⑧】XPath库及其基本用法 【Python爬虫开发基础⑨】jsonpath和BeautifulSoup库概述及

    2024年02月17日
    浏览(31)
  • 《零基础入门学习Python》第063讲:论一只爬虫的自我修养11:Scrapy框架之初窥门径

    上一节课我们好不容易装好了 Scrapy,今天我们就来学习如何用好它,有些同学可能会有些疑惑,既然我们懂得了Python编写爬虫的技巧,那要这个所谓的爬虫框架又有什么用呢?其实啊,你懂得Python写爬虫的代码,好比你懂武功,会打架,但行军打仗你不行,毕竟敌人是千军

    2024年02月16日
    浏览(33)
  • 爬虫---scrapy爬虫框架(详细+实战)

    ​ 活动地址:CSDN21天学习挑战赛 1、基本功能 Scrapy 是一个适用爬取网站数据、提取结构性数据的应用程序框架,它可以应用在广泛领域:Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指

    2023年04月22日
    浏览(38)
  • 爬虫:Scrapy热门爬虫框架介绍

    结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 再推荐一下最近热更的:《大厂测试高频面试题详解》 该专栏对近年

    2024年02月13日
    浏览(32)
  • 爬虫(四):Scrapy热门爬虫框架介绍

    结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础)》 再推荐一下最近热更的:《大厂测试高频面试题详解》 该专栏对近年

    2024年02月11日
    浏览(33)
  • 爬虫框架scrapy基本原理

    scrapy是python的爬虫框架,类似于django(python的web框架)。 安装: Mac、Linux 执行 pip3 install scrapy ,不存在任何问题 Windows 执行 pip3 install scrapy ,如果安装失败,执行下面步骤: (1)安装wheel(为支持通过文件安装软件): pip3 install wheel (wheel官网) (2)安装lxml: pip3 insta

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包