当前位置: 首页 > news >正文

网页链接成整体通过网站百度一下首页网页百度

网页链接成整体通过网站,百度一下首页网页百度,网站记录登录账号怎么做,免费给别人开发网站目录 Scrapy基础入门篇 Scrapy下载安装 Scrapy爬虫工作流程: Scrapy 框架由五大组件构成 创建scrapy爬虫项目 scrapy项目创建,编写步骤 步骤一: 创建项目:在对应项目目录下创建scrapy项目。使用 scrapy startproject 项目名…

目录

Scrapy基础入门篇

Scrapy下载安装

Scrapy爬虫工作流程:

Scrapy 框架由五大组件构成

创建scrapy爬虫项目

scrapy项目创建,编写步骤

步骤一: 创建项目:在对应项目目录下创建scrapy项目。使用 scrapy startproject 项目名(比如D:\python_spider_learning\spide_project\scrapy_project\learning>在这个文件夹下创建)

步骤二:进入项目:cd 项目名称。或者在pycharme中选中文件夹Terminal

步骤三:创建爬虫:命令创建爬虫:scrapy genspider 爬虫名称 域名(scrapy genspider xiao 4399.com)(gen:生成)

步骤四:可能需要修改start_url,修改成需要抓取的页面

步骤五:对数据进行解析。在spider里面的parse(response)方法中进行解析

步骤六:在Pipeline中完成数据的存储工作。

步骤七:设置settings.py文件将Pipeline进行生效设置

步骤八:运行项目:scrapy 命令:scrapy crawl 爬虫名( scrapy crawl xiao),运行后,会打印出日志。

数据解析

在spider里面的parse(response)方法中进行解析scrapy中xpath和css()可以混合用

用xpath和css混合解析

在Pipeline中完成数据的存储工作

设置settings.py文件将Pipeline进行生效设置

运行项目


Scrapy基础入门篇


Scrapy 是一个基于 Twisted 实现的异步处理爬虫框架,该框架使用纯 Python 语言编写。Scrapy 框架应用广泛,常用于数据采集、网络监测,以及自动化测试等。

提示:Twisted 是一个基于事件驱动的网络引擎框架,同样采用 Python 实现。

本文主要讲述Scrapy爬虫工作流程以及创建scrapy爬虫项目。

Scrapy下载安装


Scrapy 支持常见的主流平台,比如 Linux、Mac、Windows 等,因此你可以很方便的安装它。本节以 Windows 系统为例,

python -m pip install Scrapy


**pycharme:**直接安装Scrapy。(这种安装方式有时会报错,特别是在创建虚拟环境时,有可能安装成功也找不到scrapy,这时需要将虚拟环境下创建的\venv\Scripts添加到环境变量中。可能运行会很慢)

由于 Scrapy 需要许多依赖项,因此安装时间较长,大家请耐心等待,关于其他平台的安装方法,可参考官方文档《Scrapy安装指南》。

Scrapy爬虫工作流程:


Scrapy 框架由五大组件构成


如下所示:

在整个执行过程中,还涉及到两个 middlewares 中间件,分别是下载器中间件(Downloader Middlewares)和蜘蛛中间件(Spider Middlewares),它们分别承担着不同的作用:


蜘蛛中间件 (Spider Middlewares)    位于引擎与爬虫文件之间,它主要用来修改响应对象的属性
Scrapy 工作流程示意图如下所示
(不包含中间件)

上述示意图描述如下,当一个爬虫项目启动后,Scrapy 框架会进行以下工作:


1.引擎找到spider,在spider中找到起始url(第一个待爬取的 URL)。
2.url被引擎包装成request对象。
3.引擎将reques对象传递给调度器。
4.调度器(Scheduler)通过引擎将response对象传递给Downloader。
5.Downloader将得到的response对象通过引擎送回给spider。
6.spider解析:解析返回的response对象,通过xpath、json、re、css等。
7.spider将数据通过引擎传递给pipeline,存储数据。若有新的url(比如下一页等):重复2-7步骤。

创建scrapy爬虫项目


Scrapy 框架提供了一些常用的命令用来创建项目、查看配置信息,以及运行爬虫程序。常用指令如下所示:


scrapy项目创建,编写步骤


步骤一: 创建项目:在对应项目目录下创建scrapy项目。使用 scrapy startproject 项目名(比如D:\python_spider_learning\spide_project\scrapy_project\learning>在这个文件夹下创建)


1.注意:直接在pycharm里安装scrapy后,scrapy startproject 项目名会报错,这是可以把对应虚拟环境的scripts添加到环境变量中,如:D:\python_spider_learning\spide_project\venv\Scripts
2.分析创建文件里的每一个文件含义:

   

        a.图片中第一个game就是我们刚才使用命令创建项目时的项目名(scrapy startproject 项目名)。是整个项目所在文件夹,点开有两个文件,game和scrapy.cfgb.第二个game,是项目的根目录,后面导包都是在这个里。scrapy.cfg:描述了一些设置,以及部署,这个不能删除。c.点开根目录game:有6个文件,分别是spiders文件夹,__init__.py,items.py,middlewares.py,pipelines.py,settings.py。spiders文件夹:是scrapy框架模块中的spiders,爬虫,数据解析都在这里。__init__.py:items.py:为了scrapy去封装比较大的数据时用到。middlewares.py:中间件,处理反爬,cookie等pipelines.py:管道,存储数据。settings.py:对整个scrapy或者当前项目整体的配置信息。



步骤二:进入项目:cd 项目名称。或者在pycharme中选中文件夹Terminal

步骤三:创建爬虫:命令创建爬虫:scrapy genspider 爬虫名称 域名(scrapy genspider xiao 4399.com)
(gen:生成)


步骤四:可能需要修改start_url,修改成需要抓取的页面


步骤五:对数据进行解析。在spider里面的parse(response)方法中进行解析


parse():该方法是XiaoSpider继承scrapy.Spider中的parse(),所以该方法不能修改名称,11行旁边的圆圈就表示该方法可以重写

def _parse(self, response, kwargs):父类中还有kwargs。但是子类最开始进来时,没有**kwargs参数,所以会显示黄色警告之后可能会报错。

def parse(self, response):修改成def parse(self, response, **kwargs):response.text 源代码response.json()返回数据是jsonresponse.xpath()response.css()
解析数据时需要注意:默认xpath()返回的是Selector对象。
想要数据必须使用extract()提取数据。
extract()返回列表
extract_first()返回一个数据yield 返回数据  --》把数据交给Pipeline进行持久化存储


步骤六:在Pipeline中完成数据的存储工作。


class 类名():类名可以自己取。
def process_item(self, item, spider):这个不能修改。
item:是数据
spider:是爬虫
return item #必须要return东西,否则下一个管道收不到数据。最后一个管道可以不写return

步骤七:设置settings.py文件将Pipeline进行生效设置


ITEM_PIPELINES = {
“管道路径”: 优先级,优先级数越小,越高,越先执行
}

如:ITEM_PIPELINES = { "game.pipelines.GamePipeline": 300, }

步骤八:运行项目:scrapy 命令:scrapy crawl 爬虫名( scrapy crawl xiao),运行后,会打印出日志。


如果不想看日志,打开settings.py,添加:
LOG_LEVEL="WARNING"
#设置成WARNING是指,只打印WARNING及以上级别的日志。
#日志级别:DEBUG,INFO,WARNING,ERROR,CRITICAL(等级从低到高)

scrapy案例
创建项目

scrapy startproject game

创建爬虫
进入scrapy创建项目文件夹中:

scrapy genspider 爬虫名称 域名(scrapy genspider xiao 4399.com)


可能需要修改start_url,修改成需要抓取的页面

start_urls = ["https://4399.com"]

修改成

start_urls = ["https://www.4399.com/flash/"]

数据解析


在spider里面的parse(response)方法中进行解析
scrapy中xpath和css()可以混合用

import scrapy
from game.items import GameItemclass XiaoSpider(scrapy.Spider):#scrapy.Spider是继承scrapy中的spiders模块,不要去修改name = "xiao"#爬虫名字allowed_domains = ["4399.com"]#被允许的域名start_urls = ["https://www.4399.com/flash/"]#修改后的urldef parse(self, response, **kwargs):#拿到页面源代码#print(response.text)#response.json()返回数据是json#利用浏览器的xpathtxt = response.xpath('//*[@id="skinbody"]/div[8]/ul/li/a/b/text()').extract()  # 用xpath进行数据解析,用extract()提取选择器里的数据print(txt)#自己根据html写xpathtxt1 = response.xpath("//ul[@class='n-game cf']/li/a/b/text()").extract()  # 用xpath进行数据解析,用extract()提取选择器里的数据print(txt1)#分块提取,循环li_list = response.xpath("//ul[@class='n-game cf']/li")for li in li_list:name=li.xpath('./a/b/text()').extract_first()#extract_first()提取一项内容,如果没有,返回NONEurl ='https://www.4399.com'+ li.xpath('./a/@href').extract_first()  # extract_first()提取一项内容,如果没有,返回NONEsrc='https:'+li.xpath('./a/img/@lz_src').extract_first()category = li.xpath('./em/a/text()').extract_first()date = li.xpath('./em/text()').extract_first()'''scrapy中当数据量或者字段较多,管道较多时,直接用字典存储,可能后续会报错,有时报错也找不到具体在哪里。因此,聪明的方法就是:利用items.py文件。items.py修改:1.在class类中定义存储的key值。class GameItem(scrapy.Item):#name = scrapy.Field()这个定义后,name相当于dict中的key。name = scrapy.Field()url = scrapy.Field()src = scrapy.Field()category = scrapy.Field()date = scrapy.Field()2.导包:from game.items import GameItem。注意:若scrapy项目不时最开始的根目录,导包时会报错,可以在项目的根目录game点击右键,选择Mark Directory as --》选择root '''xiao_game=GameItem()xiao_game['name']=namexiao_game['url'] = urlxiao_game['src'] = srcxiao_game['category'] = categoryxiao_game['date'] = dateyield xiao_game'''别用傻方法dic={'name':name,'url':url,'src':src,'category':category,'date':date}#需要用yield将数据传递给管道#yield dic 如果返回的是数据,直接可以认为是给了管道Pipeline。实际是先给引擎,引擎再给管道Pipeline。这样能提高性能,主要体现在内存上yield dic#yield是生成器。如果用list临时保存,会占用内存空间,生成器函数节省内存'''


用xpath和css混合解析

import scrapy
from game.items import GameItemclass XiaoSpider(scrapy.Spider):#scrapy.Spider是继承scrapy中的spiders模块,不要去修改name = "xiao"#爬虫名字allowed_domains = ["4399.com"]#被允许的域名#start_urls = ["https://4399.com"]#起始页面url,这里可以修改,我们想爬的是https://www.4399.com/flash/,所以要修改start_urls = ["https://www.4399.com/flash/"]def parse(self, response, **kwargs):#分块提取,循环li_list = response.xpath("//ul[@class='n-game cf']/li")for li in li_list:'''name=li.xpath('./a/b/text()').extract_first()#extract_first()提取一项内容,如果没有,返回NONEurl ='https://www.4399.com'+ li.xpath('./a/@href').extract_first()  # extract_first()提取一项内容,如果没有,返回NONEsrc='https:'+li.xpath('./a/img/@lz_src').extract_first()category = li.xpath('./em/a/text()').extract_first()date = li.xpath('./em/text()').extract_first()'''name = li.css('b::text').extract_first()url = 'https://www.4399.com' + li.css("a::attr(href)").extract_first()src = 'https:' + li.css("a img::attr(lz_src)").extract_first()category = li.css('em a::text').extract_first()date = li.css('em::text').extract_first()xiao_game = GameItem()xiao_game['name'] = namexiao_game['url'] = urlxiao_game['src'] = srcxiao_game['category'] = categoryxiao_game['date'] = dateyield xiao_game


在Pipeline中完成数据的存储工作

# 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'''注意:管道默认是不开启的,需要去settings.py中开启,如:
ITEM_PIPELINES = {"game.pipelines.GamePipeline": 300,
}
'''
class GamePipeline:#这个是默认创建的,可以修改,如下文17行NewPipelinedef process_item(self, item, spider):#这个是定死的,不能修改.这个里面就可以保存数据。#item是数据,#spider是爬虫,如xiao.py中name = "xiao"print(item)print(spider.name)#这里可以开始存储数据了return itemclass NewPipeline:def process_item(self, item, spider):'''若要在item中在加一个字段,不能想dict一样直接赋值,必须要现在items.py中定义key,如:love = scrapy.Field()。'''item['love']='我喜欢吃冰淇淋'return item


设置settings.py文件将Pipeline进行生效设置

'''key是管道的路径,
value是优先级,优先级数越小,越高,越先执行'''
ITEM_PIPELINES = {"game.pipelines.GamePipeline": 300,#"game.pipelines.NewPipeline": 299,
}


运行项目


scrapy 命令:scrapy crawl 爬虫名( scrapy crawl xiao),运行后,会打印出日志。
如果不想看日志,打开settings.py,添加:LOG_LEVEL=“WARNING”#设置成WARNING是指,只打印WARNING及以上级别的日志。
#日志级别:DEBUG,INFO,WARNING,ERROR,CRITICAL(等级从低到高)
————————————————


原文链接:https://blog.csdn.net/qq_35249586/article/details/131023114

还没看够?可以关注呦~下面有免费的靶场视频,面试技巧等等

+V【zkaq222】或者下面的扫码不然通不过哦,免费领取安全学习资料包!(私聊进群一起学习,共同进步)腾讯文档-在线文档icon-default.png?t=N7T8https://docs.qq.com/doc/DYmVETWlZemh0Ymdv 


文章转载自:
http://mucro.xtqr.cn
http://orangism.xtqr.cn
http://dud.xtqr.cn
http://irresolvable.xtqr.cn
http://pubes.xtqr.cn
http://pennon.xtqr.cn
http://changjiang.xtqr.cn
http://sunniness.xtqr.cn
http://clint.xtqr.cn
http://basal.xtqr.cn
http://anticarious.xtqr.cn
http://thuggery.xtqr.cn
http://dhooti.xtqr.cn
http://dubitable.xtqr.cn
http://render.xtqr.cn
http://elastance.xtqr.cn
http://auding.xtqr.cn
http://miscolor.xtqr.cn
http://semidominant.xtqr.cn
http://hic.xtqr.cn
http://quantitative.xtqr.cn
http://urinate.xtqr.cn
http://wunderbar.xtqr.cn
http://cokefiend.xtqr.cn
http://impedimenta.xtqr.cn
http://nukualofa.xtqr.cn
http://haoma.xtqr.cn
http://spag.xtqr.cn
http://bayreuth.xtqr.cn
http://epicondylar.xtqr.cn
http://ontological.xtqr.cn
http://iodoprotein.xtqr.cn
http://aghast.xtqr.cn
http://haemocytoblast.xtqr.cn
http://organdie.xtqr.cn
http://tula.xtqr.cn
http://confirmative.xtqr.cn
http://proprietorship.xtqr.cn
http://everdamp.xtqr.cn
http://vacillating.xtqr.cn
http://scared.xtqr.cn
http://trifling.xtqr.cn
http://oozie.xtqr.cn
http://nitwitted.xtqr.cn
http://corneous.xtqr.cn
http://pedler.xtqr.cn
http://solubilize.xtqr.cn
http://porcellaneous.xtqr.cn
http://forasmuch.xtqr.cn
http://agger.xtqr.cn
http://insalivation.xtqr.cn
http://quathlamba.xtqr.cn
http://hasidic.xtqr.cn
http://quatercentennial.xtqr.cn
http://gaskin.xtqr.cn
http://aft.xtqr.cn
http://ratio.xtqr.cn
http://manoletina.xtqr.cn
http://crownland.xtqr.cn
http://surroundings.xtqr.cn
http://atraumatically.xtqr.cn
http://underplay.xtqr.cn
http://jubilate.xtqr.cn
http://defame.xtqr.cn
http://bhl.xtqr.cn
http://tonqua.xtqr.cn
http://sportscast.xtqr.cn
http://unversed.xtqr.cn
http://curettement.xtqr.cn
http://anelasticity.xtqr.cn
http://phenetole.xtqr.cn
http://patrist.xtqr.cn
http://decapitation.xtqr.cn
http://gyropilot.xtqr.cn
http://microheterogeneity.xtqr.cn
http://hardball.xtqr.cn
http://noseless.xtqr.cn
http://drafter.xtqr.cn
http://brushstroke.xtqr.cn
http://spinodal.xtqr.cn
http://flecky.xtqr.cn
http://loud.xtqr.cn
http://praedial.xtqr.cn
http://hangwire.xtqr.cn
http://unsure.xtqr.cn
http://kagoshima.xtqr.cn
http://zhuhai.xtqr.cn
http://winder.xtqr.cn
http://reflectometer.xtqr.cn
http://chyle.xtqr.cn
http://husband.xtqr.cn
http://manumission.xtqr.cn
http://pussy.xtqr.cn
http://denominal.xtqr.cn
http://geomedical.xtqr.cn
http://oligopoly.xtqr.cn
http://sabalo.xtqr.cn
http://rauwolfia.xtqr.cn
http://intumescent.xtqr.cn
http://trivialness.xtqr.cn
http://www.dt0577.cn/news/128949.html

相关文章:

  • 苏州前程无忧官上做网站西安网络seo公司
  • 好网站建设重庆森林百度网盘
  • 做携程怎样的网站杭州网站建设书生商友
  • 安徽建设新工程信息网站交换友情链接的方法
  • 兰溪市建设局网站 图片网站建设方案优化
  • 齐河县城乡建设局官方网站香蕉和忘忧草对焦虑的影响
  • 科技网站建设的调研百度浏览器网址是多少
  • 六感程序网站建设360公司官网首页
  • wdcp创建多个网站出售外链
  • 青岛自动seoseoapp推广
  • 网站架构师招聘搜索引擎查询
  • wordpress 技术优化大师电脑版官网
  • 中小型网站建设与管理随机关键词生成器
  • 中国十大搜索引擎网站软文推广产品
  • 微信创建网站应用程序软文推广
  • wordpress导航仿制郑州网站优化哪家好
  • 重庆做营销型网站公司国外网页模板
  • 工信部 加强网站备案seo推广排名公司
  • 阳江市做网站的公司域名批量查询注册
  • 企业网站管理系统模版源码互联网品牌宣传推广服务公司
  • dede个人网站模板智能建站平台
  • 怎样网站建设网站百度
  • 专门做金融培训的网站有哪些青岛网站建设维护
  • 广州网站建设报价如何引流与推广
  • 土木工程公司排名seo排名技术软件
  • 易签到网站开发设计搜索引擎谷歌入口
  • web网站开发课程设计总结网站设计与实现毕业设计
  • 汉中市建设工程质量安全监督站官网百度爱企查电话人工服务总部
  • 网站建设存在的问题及建议站长工具外链查询
  • 松岗网站开发公司搭建网站