pycharm爬虫模块(scrapy)基础使用

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

今天学了个爬虫。在此记录

目录

一.通过scrapy在命令行创建爬虫项目

二.判断数据为静态还是动态

三.pycharm中的设置

三:爬虫主体

四.pipelines配置(保存数据的)

五.最终结果


一.通过scrapy在命令行创建爬虫项目

1.首先需要在cmd中进入到python文件对应的文件夹目录下pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

2.下载scrapcy模块pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

(如果是在conda环境下的话直接配置就行了ps:(conda是款工具,里面有自带的python环境))

3.创建项目

scrapy startproject test (创建一个爬虫工程,名字为test2 (ps:前面那两一定得加,如果不指定目录默认安装在当前的路径下边指定目录的话按后面这样写scrapy startproject ⼯程名 [⼯程⽬录]))

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

进入pycharm中发现创建成功。ps:如果没使用ancoda,直接本机pycharm安装,这里面可能有些东西会标红,把鼠标放到红色的地方会弹出来个导包选项,导进去就行。

scrapy.cfg是最终部署爬⾍的配置⽂件

items.py设置要爬取的字段

pipelines.py设置保存爬取内容

settings.py设置⽂件,⽐如User-Agent spiders⽬录保存genspider⽣成的爬⾍⽂件

genspider表示⽣成爬⾍,example表示爬⾍名称,可以对应爬取⽹址域名的前缀,example.com是要爬取的⽹址

而后回到项目目录下创建爬虫文件

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapypycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

创建成功后,就会在spiders下看到创建的.py文件。其中,里面这两地址是可以改的,改成准备爬取的地址也可以在创的时候就改好,这里爬一个搜索 | 腾讯招聘这玩意。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

二.判断数据为静态还是动态

创建好后,可以通过postman(一个软件,可以解析url的具体请求)对其进行分析,看看爬取类型是动态还是静态。(网页中分为静态爬取和动态爬取)通过f12查看页面源码,观察具体情况。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

f12点开后,首先便将点击图中的网络,即可看到关于页面网络的相关信息(刚点击去应该是空的,会有个提示ctrl+R查看网络信息),而后点击fetch/xhr,这是网络中一个查看网页中异步请求的模块。(异步:说到异步处理就得提它兄弟,同步处理。(举例子,具体区别搜别的佬怎么写的)同步处理很好理解,就是一条一条请求顺序执行,第一条执行完才执行第二个。但这样就会出现一种情况,如果第一条是个很庞大的命令,那就要执行很久,就会导致长时间的等待,出现堵塞情况。而异步就是解决此问题,如果出现一条需要执行很长很久的命令或者任务,异步处理会先将其挂起,转而处理下一条命令。比如一条命令需要执行1000秒,异步请求就会先将其挂在后台一个叫任务队列的东西,先执行下一条数据。等到1000秒后才会执行前面这条挂起的数据。)由于js是单线程运行的(设计原因),只能一条一条执行,因此异步就变得非常关键。

通过刷新页面,这个页面就会出现几个数据包(报头)。其中就可以看到一条关于腾讯招聘的数据信息及其url,此时可以将其放到postman中获取具体的信息。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

进入postman(下载很简单,默认ok就行),放入url进行一个发送,可以看到下面得到的响应数据,将其拖到最下面发现总行数为208行。因为要判断数据是静态还是动态,需要翻到这个网站页面的第二页查看情况。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

发现其数据的总数依旧是208。正常情况来看,如果数据发生了变化,其所对应的代码量应该也是会出现变化的。但这里依旧是208,并没有改变,因此可以初步判断此处的数据是一个动态获取的数据,通过服务器内一些内部的调用来回显信息。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

确定为动态数据后,可以先对url进行判断。可以发现这里只有index那么一个参数是有变化的(timestamp是个时间戳,判断时间用的,这里没啥用),因此后续爬取的时候只需要对index部分进行相关的更改即可。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

确定数据类型后,则需要观察有哪些数据包的字段是可以爬取的,这里postman里可以直接看到,选取需要的数据进行爬取。(ps:有些网站postman可能无法直接将数据查出来,可以在上面的headers中添加一些refer,cookie来完成更详细的数据读取,还有些可能还有编码,需要去解)

三.pycharm中的设置

得到的需要的相关信息后,则要对pycharm中的爬虫模块进行配置,首先便是配置setting中的数据。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

由于咱们是在爬取对方的数据,理论上来说这是违法的,并且直接进行爬取的话,对方网站也有相应的反爬措施,因此需要构造一些伪造的请求来对网站进行访问。这里也是从网上找了一些伪造的UA头,而后放在这个#user_agent下,后续进行调取来伪造我们是一个正常的网页对其进行访问。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

而后进入middle-ware中间件,在download下对刚刚引入的ua头进行随机的引用。(为什么在download下引用是scrapy的工作原理,建议百度查查)

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

而后便在item下对所需要得到的数据进行简单的应用,表示⽤它来存储爬取到每⼀条职位信息对应字段的值,它继承的是scrapy.Item,这个是必须继承的,否则这些字段的值是⽆法保存到⾃定义的变量⾥⾯

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

将pipe这个注释取消掉(pipe是scrapy中的存储数据的管道,具体工作原理请百度),并且添加上

 "scrapy.downloadermiddleware.useragent.UserAgentMiddleware": None(作用,确保一开始中间件没有使用ua头,而是调用那些外部导入的伪造ua头)

三:爬虫主体

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapypycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

由于url过长,因此使用拼接的方法将其连起来。因为pageindex是翻页的信息,因此后续这个东西是要一直变的,所以把这个参数放到最后,方便后续的使用。再定义一个起始页,将它与url拼接(str的形式)。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

这里需要先提前导入一下Test2中(我的项目名)中的items文件,导入items.py中的类,否则下面引用的时候会出现报错。(ps:这里出现红线没关系,也能正常使用)

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

这里便是爬虫方法中的一个主体,其中,刚初始化时parse这个爬虫函数是只有两个参数的,而实际使用的话该函数需要再加一个参数才能正常运行。因此搜索了一下函数文档,发现需要加上一个关键字的传递参数kwargs(前面的两个*是默认格式) 由于爬的数据都是字符串且都是json格式的,所以通过json.loads转换成一个反序列化的结构,从而更方便的得到key也就是数据(具体请查反序列化是啥 咱就一写作业的)。并使其存储导data_obj里面(这玩意叫a叫b都行),而count则是其中的总数据,posts则是数据存储的一个位置。里面有相关的数据信息。因此通过这个data_obj去取得data下面的Posts里面的数据以及count总数,并对此进行反复循环得到相关的数据。后面那一串便是通过item中定义的数据去与posts中的数据一一对应,最后通过yield将其循环反复得到数据。ps(这个网址也需要看一下,直接导入网址是无法成功的,这里选择将url进行一个简单的拼接得到(可以通过postman看到具体情况))

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

下面这些则是进行一个基本的页数判断。可以通过postman发现,总数据总共是有2882条,如果只是进行一个简单的+=判断,这个是无法得到最后的那几条数据的,会出现小数。因此这里通过累计加1,调用math.ceil这个函数(向上取整,举例:一个3.15的数据,通过这个函数,最终取值为4;一个18.33的数据,通过这个函数最终取值为19)因此通过该函数来得到数据,重新写入url,通过scrapy获得一个请求,拼接上相关的url地址,再写一个callback(回调方法),使整体定义的这个parse重新循环,接着爬取数据。(self可以理解成我的,这里self写在parse函数内,因此可以理解成parse的xxx,来确保引用的page_index和parse是属于parse的)

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

四.pipelines配置(保存数据的)

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

这里首先定义一个初始化的方法,通过写的方法去创造一个doucment.txt的文件(文件名随意)python中w的含义:打开一个文件只用于写⼊。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如 果该文件不存在,创建新文件。因此这里就算没有这个txt文件也没关系,而encoding则是确认编码形式。

dict_item=dict(item):将item对象转换成字典对象,后续使用字典去进行爬取

json.dump则是将此前反序列化的对象转换成一个序列化的文本(爬虫时将其反序列化是为了更加方便的得到数据中的值,而这里又将其序列化出来则是为了让输出的信息更加完整),并将其复制给text,加上ensure_acill确保是以文本的形式出现。而后将序列化后的text写入到文件中。

最后定义的close函数则是为了关闭原先定义的document.txt文本,python中 写入文件的话需要将其关闭,不然可能会出现一些异常。

五.最终结果

全部完成定义后,在命令行中通过scrapy crawl zuoye对其进行爬取,crawl为爬取的命令,zuoye则是创建的项目 就是那个name。所得的数据将会存入定义的document.txt文件中。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy

ps:有可能会出现以下错误,这个是由于python中一个叫twisted的配置文件版本导致的,可以选择加到最高版本或降点版本看看,如果还有问题可以尝试降低python的环境来进行配置。

pycharm爬虫模块(scrapy)基础使用,pycharm,爬虫,scrapy文章来源地址https://www.toymoban.com/news/detail-855367.html

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

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

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

相关文章

  • Scrapy-爬虫模板的使用

    Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类

    2023年04月09日
    浏览(22)
  • Python爬虫基础:使用requests模块获取网页内容

    了解如何使用Python中的requests模块进行网页内容获取,包括获取网页步骤、代码实现、状态码查看、提取信息等。

    2024年02月22日
    浏览(74)
  • 使用Scrapy框架集成Selenium实现高效爬虫

    在网络爬虫的开发中,有时候我们需要处理一些JavaScript动态生成的内容或进行一些复杂的操作,这时候传统的基于请求和响应的爬虫框架就显得力不从心了。为了解决这个问题,我们可以使用Scrapy框架集成Selenium来实现高效的爬虫。 Scrapy是一个使用Python编写的开源网络爬虫框

    2024年02月09日
    浏览(36)
  • [爬虫]3.4.1 Scrapy框架的基本使用

    Scrapy是一款强大的Python网络爬虫框架,它可以帮助你快速、简洁地编写爬虫程序,处理数据抓取、处理和存储等复杂问题。 在开始使用Scrapy之前,你需要先将其安装在你的系统中。你可以使用Python的包管理器pip来安装Scrapy: Scrapy使用一个明确的项目结构来管理爬虫。你可以

    2024年02月16日
    浏览(35)
  • Python爬虫进阶:使用Scrapy库进行数据提取和处理

    在我们的初级教程中,我们介绍了如何使用Scrapy创建和运行一个简单的爬虫。在这篇文章中,我们将深入了解Scrapy的强大功能,学习如何使用Scrapy提取和处理数据。 在Scrapy中,提取数据主要通过Selectors来完成。Selectors基于XPath或CSS表达式的查询语言来选取HTML文档中的元素。你

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

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

    2024年02月16日
    浏览(38)
  • 爬虫学习 Scrapy中间件&代理&UA随机&selenium使用

    控制台操作 (百度只起个名 scrapy startproject mid scrapy genspider baidu baidu.com setting.py内 运行 scrapy crawl baidu middlewares.py 中间件 先看下载器中间件 重点在 process_request 在引擎将请求的信息交给下载器之前,自动的调用该方法 process_response… process_exception 异常 (看名就知道了…) spider

    2024年03月23日
    浏览(53)
  • 使用scrapy爬虫出错:AttributeError: ‘AsyncioSelectorReactor‘ object has no attribute ‘_handleSignals‘

    使用scrapy爬虫框架时出错: 根据这篇文章解决问题:python爬虫 - Scrapy>=2.9.0出现 “AttributeError: ‘AsyncioSelectorReactor‘ object has no attribute ‘_hand”_小菜鸟正洋洋的博客-CSDN博客 卸载Twisted的23.8.0版本(当前最新版),安装次新版本22.10.0rc1,就解决问题了。 我特别喜欢升级各种

    2024年02月04日
    浏览(22)
  • python爬虫进阶篇:Scrapy中使用Selenium模拟Firefox火狐浏览器爬取网页信息

    接着上一篇的笔记,Scrapy爬取普通无反爬、静态页面的网页时可以顺利爬取我们要的信息。但是大部分情况下我们要的数据所在的网页它是动态加载出来的(ajax请求后传回前端页面渲染、js调用function等)。这种情况下需要使用selenium进行模拟人工操作浏览器行为,实现自动化

    2024年02月04日
    浏览(54)
  • python爬虫进阶篇:Scrapy中使用Selenium+Firefox浏览器爬取沪深A股股票行情

    上篇记录了Scrapy搭配selenium的使用方法,有了基本的了解后我们可以将这项技术落实到实际需求中。目前很多股票网站的行情信息都是动态数据,我们可以用Scrapy+selenium对股票进行实时采集并持久化,再进行数据分析、邮件通知等操作。 详情请看上篇笔记 items middlewares setti

    2024年02月04日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包