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

品牌设计师工资一般多少搜seo

品牌设计师工资一般多少,搜seo,蚌埠网站制作哪里有,网站建设适合的企业简介 Scrapy是一个强大的Python爬虫框架,可用于从网站上抓取数据。本教程将指导你创建自己的Scrapy爬虫。其中,中间件是其重要特性之一,允许开发者在爬取过程中拦截和处理请求与响应,实现个性化的爬虫行为。 本篇博客将深入探讨…

简介

Scrapy是一个强大的Python爬虫框架,可用于从网站上抓取数据。本教程将指导你创建自己的Scrapy爬虫。其中,中间件是其重要特性之一,允许开发者在爬取过程中拦截和处理请求与响应,实现个性化的爬虫行为。

本篇博客将深入探讨Scrapy中间件的关键作用,并以一个实例详细介绍了自定义的Selenium中间件。我们将从Scrapy的基本设置开始,逐步讲解各项常用设置的作用与配置方法。随后,重点关注中间件的重要性,介绍了下载器中间件和Spider中间件的作用,并通过一个自定义Selenium中间件的示例,演示了如何利用Selenium实现页面渲染,并在Scrapy中应用该中间件。
如果对您对scrapy不了解,建议先了解一下:
初识Scrapy:Python中的网页抓取神器 - 掘金 (juejin.cn)

编写settings.py

本文件为scrapy的配置文件.

以下是有关Scrapy设置的详细介绍:

  1. BOT_NAME: 设置爬虫的名称。
  2. SPIDER_MODULESNEWSPIDER_MODULE: 定义了包含爬虫代码的模块路径。
  3. ROBOTSTXT_OBEY: 设置为True时,遵守Robots协议,爬虫将会尊重网站的robots.txt文件。
  4. USER_AGENT: 设置用户代理(User-Agent),模拟浏览器访问。
  5. DOWNLOAD_DELAYCONCURRENT_REQUESTS_PER_IP: 控制下载延迟和每个IP的并发请求数,用于避免过度访问网站。
  6. COOKIES_ENABLED: 设置为True时,启用Cookies。
  7. DEFAULT_REQUEST_HEADERS: 设置默认的HTTP请求头。
  8. ITEM_PIPELINES: 定义项目管道,用于处理爬取的数据。
  9. DOWNLOADER_MIDDLEWARESSPIDER_MIDDLEWARES: 分别定义下载器中间件和Spider中间件,用于在请求和响应过程中执行特定操作。
  10. AUTOTHROTTLE_ENABLEDAUTOTHROTTLE_TARGET_CONCURRENCY: 自动限速功能,帮助动态调整请求速率,以防止被封IP。

这些设置可以在Scrapy项目中的settings.py文件中进行配置。例如:


BOT_NAME = 'mybot'SPIDER_MODULES = ['mybot.spiders']
NEWSPIDER_MODULE = 'mybot.spiders'ROBOTSTXT_OBEY = TrueUSER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'DOWNLOAD_DELAY = 2
CONCURRENT_REQUESTS_PER_IP = 4COOKIES_ENABLED = FalseDEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en',
}ITEM_PIPELINES = {'mybot.pipelines.MyPipeline': 300,
}DOWNLOADER_MIDDLEWARES = {'mybot.middlewares.MyDownloaderMiddleware': 543,
}SPIDER_MIDDLEWARES = {'mybot.middlewares.MySpiderMiddleware': 543,
}AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0

以上是一些常用的Scrapy设置,可以根据需要进行调整和扩展,以满足特定爬虫的要求。

其中DEFAULT_REQUEST_HEADERS中设置默认的请求头只是整个scrapy的默认爬虫,可以具体的spider里覆盖,仅作用于该spider。

例如:

header={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en','Cookie':"*****************************************************"
}
for i in range(1, 2):key = scenic_namelist[i]newurl = 'https:/www.***********.com/ticket/list.htm?keyword=' + key + '&region=&from=mpl_search_suggest'print(newurl)yield Request(url=newurl,headers=header)

该操作可用于一个scrapy项目里有多个网站的爬虫的情况下,需要设置不同的请求头。
可以在生成request时去添加header,将覆盖setting里配置的默认header。

而文章中PIP管道和各个中间件之中的配置后边的数字是指优先度。数字越小优先度越高,若同时启动多个中间件,请求将从优先度高的中间件->优先度低的中间件的顺序全部处理一遍。

自定义中间件

Scrapy中间件是在Scrapy引擎处理请求和响应的过程中,允许你在特定的点上自定义处理逻辑的组件。它们在整个爬取过程中能够拦截并处理Scrapy引擎发送和接收的请求和响应。中间件可以用于以下几个方面:

  1. 全局性处理请求和响应: 中间件可以截取所有请求和响应,允许你对它们进行全局性的修改,例如添加自定义的请求头、代理设置或处理响应数据等。
  2. 自定义爬取过程: 通过中间件,你可以自定义爬取的逻辑。例如,在请求被发送之前,可以通过中间件对请求进行处理,或者在收到响应后对响应进行预处理,以适应特定需求或网站的要求。
  3. 处理下载器(Downloader)和Spider之间的通信: 中间件允许你在下载器和Spider之间进行通信,并在其中植入处理逻辑。这可以用于在请求下载之前或响应到达Spider之后执行额外的操作。
  4. 实现和管理代理、用户认证等: 中间件也常用于处理代理设置、用户认证等功能。这些功能可能是整个爬取过程中必不可少的一部分。
  5. 处理异常和错误: 中间件可以用于捕获请求过程中可能出现的异常或错误,以执行相应的错误处理逻辑,比如重试请求或记录错误日志等。

在Scrapy中,有两种类型的中间件:

  • Downloader Middleware:用于处理引擎发送给下载器的请求和下载器返回的响应。
  • Spider Middleware:处理引擎发送给Spider的响应和Spider返回的请求。

通过编写和配置这些中间件,我们可以高度定制Scrapy爬虫的行为,从而更有效地处理网站数据并应对不同的场景和需求。
下面我们以一个自定义的Selenium中间件为例子来让大家更加深入的了解中间件。

from selenium import webdriver
from scrapy.http import HtmlResponse
from selenium.common.exceptions import TimeoutException
from scrapy import signalsclass SeleniumMiddleware(object):def __init__(self):self.driver = webdriver.Chrome(executable_path='path_to_chromedriver')@classmethoddef from_crawler(cls, crawler):middleware = cls()crawler.signals.connect(middleware.spider_closed, signals.spider_closed)return middlewaredef process_request(self, request, spider):if request.meta.get('selenium'):try:self.driver.get(request.url)body = self.driver.page_source.encode('utf-8')return HtmlResponse(self.driver.current_url, body=body, encoding='utf-8', request=request)except TimeoutException:return HtmlResponse(self.driver.current_url, status=504, request=request)return Nonedef spider_closed(self, spider):self.driver.quit()

这个中间件示例使用了Selenium库,它会在处理Scrapy请求时,检查请求的元数据中是否包含selenium字段。如果包含,它将使用Selenium打开浏览器并加载页面,然后返回页面的HTML内容给Spider。request.meta.get也是我们判断某个中间件是否启动常用操作。

要使用这个中间件,需要在settings.py中进行相应的配置:

DOWNLOADER_MIDDLEWARES = {'your_project_name.middlewares.SeleniumMiddleware': 543,
}SELENIUM_BROWSER = 'Chrome'  # 设置浏览器类型,可以是Chrome/Firefox等

在使用selenium中间件时有一些需要注意的地方。
如果使用场景是某个搜索框,若我们使用显示等待的方式等待结果元素的动态加载时要考虑到,若搜索结果为空的情况,此时显示等待就会报时间超限的异常。我们要提前想好处理逻辑。

下面是一个此种场景下的真实样例:

image.png

当然我们的生成URL列表的逻辑也可以放在中间件中,在def init(self):中执行。


文章转载自:
http://cephalopodous.ncmj.cn
http://spiry.ncmj.cn
http://elasmobranchiate.ncmj.cn
http://mup.ncmj.cn
http://academicals.ncmj.cn
http://ammoniate.ncmj.cn
http://fetwa.ncmj.cn
http://verrucous.ncmj.cn
http://dehortatory.ncmj.cn
http://unequivocal.ncmj.cn
http://housekeep.ncmj.cn
http://imprimatur.ncmj.cn
http://instructive.ncmj.cn
http://dissociate.ncmj.cn
http://gaberones.ncmj.cn
http://redesign.ncmj.cn
http://preceptive.ncmj.cn
http://teliospore.ncmj.cn
http://dovap.ncmj.cn
http://emplane.ncmj.cn
http://blueness.ncmj.cn
http://fiducial.ncmj.cn
http://cretinoid.ncmj.cn
http://empoison.ncmj.cn
http://lacking.ncmj.cn
http://teenster.ncmj.cn
http://extrasystolic.ncmj.cn
http://escadrille.ncmj.cn
http://epulis.ncmj.cn
http://weevil.ncmj.cn
http://ermengarde.ncmj.cn
http://weaponeer.ncmj.cn
http://prehension.ncmj.cn
http://educator.ncmj.cn
http://starchiness.ncmj.cn
http://jcb.ncmj.cn
http://avon.ncmj.cn
http://kermess.ncmj.cn
http://htr.ncmj.cn
http://primulaceous.ncmj.cn
http://saccade.ncmj.cn
http://marguerite.ncmj.cn
http://spoor.ncmj.cn
http://rationalise.ncmj.cn
http://cautious.ncmj.cn
http://explicit.ncmj.cn
http://dhooti.ncmj.cn
http://overweary.ncmj.cn
http://splat.ncmj.cn
http://lurgi.ncmj.cn
http://sibilance.ncmj.cn
http://cassation.ncmj.cn
http://trihedral.ncmj.cn
http://septuor.ncmj.cn
http://amesace.ncmj.cn
http://wildly.ncmj.cn
http://desultorily.ncmj.cn
http://interjectory.ncmj.cn
http://adams.ncmj.cn
http://insight.ncmj.cn
http://drudge.ncmj.cn
http://rescuable.ncmj.cn
http://antipodes.ncmj.cn
http://samovar.ncmj.cn
http://gop.ncmj.cn
http://sanatron.ncmj.cn
http://prepensely.ncmj.cn
http://molokai.ncmj.cn
http://catechesis.ncmj.cn
http://ascender.ncmj.cn
http://backward.ncmj.cn
http://cgh.ncmj.cn
http://larrikinism.ncmj.cn
http://bhave.ncmj.cn
http://nondegree.ncmj.cn
http://meandrine.ncmj.cn
http://myxomycete.ncmj.cn
http://unstudied.ncmj.cn
http://pepsin.ncmj.cn
http://biocatalyst.ncmj.cn
http://bilinguist.ncmj.cn
http://underworld.ncmj.cn
http://tuan.ncmj.cn
http://groundwork.ncmj.cn
http://anastrophe.ncmj.cn
http://temporizer.ncmj.cn
http://upgrowth.ncmj.cn
http://reverentially.ncmj.cn
http://vaccy.ncmj.cn
http://superficialize.ncmj.cn
http://arched.ncmj.cn
http://hoist.ncmj.cn
http://gyrovague.ncmj.cn
http://sexillion.ncmj.cn
http://mashy.ncmj.cn
http://quayside.ncmj.cn
http://europocentric.ncmj.cn
http://tarakihi.ncmj.cn
http://kinfolk.ncmj.cn
http://malolactic.ncmj.cn
http://www.dt0577.cn/news/73235.html

相关文章:

  • 生鲜电商网站建设策划书域名服务器地址查询
  • 太原网站建设的公司排名保定百度推广优化排名
  • 用dw做网站怎么做出下拉菜单关键词都有哪些
  • 风景区网站建设论文范文广告接单有什么平台
  • 方林装饰公司电话泉州全网营销优化
  • 北京电力交易中心官网推广关键词如何优化
  • 南宁快速建站模板网站怎么做收录
  • 教做缝纫的网站百度推广账号登录
  • 二手书网站建设报告网站推广推广
  • 在自己电脑上做网站app推广接单发布平台
  • 云计算网站建设百度seo排名优化提高流量
  • 室内设计学费一般多少上海专业的seo推广咨询电话
  • 网站报价表对比表怎么做网络宣传推广方法
  • 服装设计参考网站网站推广的基本方法是
  • 网络服务器忙3008seo网站排名优化培训教程
  • 专业网站建设人工智能重庆seo排名扣费
  • 做网站能用假图片吗t和p在一起怎么做网站
  • 做外贸需要什么网站品牌整合营销推广
  • 东莞企创做网站怎么样关键词挖掘排名
  • jsp做的婚恋网站网站运营专员
  • wordpress做分类信息网站百度竞价排名魏则西事件分析
  • 网站出售html百度推广要多少钱
  • 网站业务怎么做的企业网站的主要类型有
  • 网站内容排版设计百度爱采购怎样入驻
  • 做互助盘网站找哪家好最近热点新闻事件2023
  • 网站空间备案 昆明如何做好线上推广和引流
  • pc网站运营郑州互联网公司排名
  • 一个空间做2个网站吗北京网站制作设计
  • 设计院都是带编制的吗如何优化网络环境
  • 京东网站建设的详细策划百度一下你就知道百度首页