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

17网站一起做网店好不好品牌设计策划

17网站一起做网店好不好,品牌设计策划,平面设计vi是什么意思,新东方留学机构官网爬虫scrapy中间件的使用 学习目标#xff1a; 应用 scrapy中使用间件使用随机UA的方法应用 scrapy中使用代理ip的的方法应用 scrapy与selenium配合使用 1. scrapy中间件的分类和作用 1.1 scrapy中间件的分类 根据scrapy运行流程中所在位置不同分为#xff1a; 下载中间件…爬虫scrapy中间件的使用 学习目标 应用 scrapy中使用间件使用随机UA的方法应用 scrapy中使用代理ip的的方法应用 scrapy与selenium配合使用 1. scrapy中间件的分类和作用 1.1 scrapy中间件的分类 根据scrapy运行流程中所在位置不同分为 下载中间件爬虫中间件 1.2 scrapy中间的作用预处理request和response对象 对header以及cookie进行更换和处理使用代理ip等对请求进行定制化操作 但在scrapy默认的情况下 两种中间件都在middlewares.py一个文件中 爬虫中间件使用方法和下载中间件相同且功能重复通常使用下载中间件 2. 下载中间件的使用方法 接下来我们对腾讯招聘爬虫进行修改完善通过下载中间件来学习如何使用中间件 编写一个Downloader Middlewares和我们编写一个pipeline一样定义一个类然后在setting中开启 Downloader Middlewares默认的方法 process_request(self, request, spider) 当每个request通过下载中间件时该方法被调用。 2. 返回None值没有return也是返回None该request对象传递给下载器或通过引擎传递给其他权重低的process_request方法 3. 返回Response对象不再请求把response返回给引擎 4. 返回Request对象把request对象通过引擎交给调度器此时将不通过其他权重低的process_request方法 process_response(self, request, response, spider) 当下载器完成http请求传递响应给引擎的时候调用 2. 返回Resposne通过引擎交给爬虫处理或交给权重更低的其他下载中间件的process_response方法 3. 返回Request对象通过引擎交给调取器继续请求此时将不通过其他权重低的process_request方法 在settings.py中配置开启中间件权重值越小越优先执行 3. 定义实现随机User-Agent的下载中间件 3.1 在middlewares.py中完善代码 middlewares.py中自带的代码可以删除掉 import random from Tencent.settings import USER_AGENTS_LIST # 注意导入路径,请忽视pycharm的错误提示class UserAgentMiddleware(object):def process_request(self, request, spider):user_agent random.choice(USER_AGENTS_LIST)request.headers[User-Agent] user_agent # 不写return class CheckUA:def process_response(self,request,response,spider):print(request.headers[User-Agent])return response # 不能少3.2 在settings中设置开启自定义的下载中间件设置方法同管道 DOWNLOADER_MIDDLEWARES {Tencent.middlewares.UserAgentMiddleware: 543, # 543是权重值Tencent.middlewares.CheckUA: 600, # 先执行543权重的中间件再执行600的中间件 }3.3 在settings中添加UA的列表 USER_AGENTS_LIST [Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0),Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322),Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30),Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30),Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527 (KHTML, like Gecko, Safari/419.3) Arora/0.6,Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1,Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0,Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5 ]运行爬虫观察现象 4. 代理ip的使用 4.1 思路分析 代理添加的位置request.meta中增加proxy字段获取一个代理ip赋值给request.meta[proxy] 代理池中随机选择代理ip代理ip的webapi发送请求获取一个代理ip 4.2 具体实现 免费代理ip class ProxyMiddleware(object):def process_request(self,request,spider):# proxies可以在settings.py中也可以来源于代理ip的webapi# proxy random.choice(proxies) # 免费的会失效报 111 connection refused 信息重找一个代理ip再试proxy https://1.71.188.37:3128 request.meta[proxy] proxyreturn None # 可以不写return收费代理ip # 人民币玩家的代码(使用abuyun提供的代理ip) import base64# 代理隧道验证信息 这个是在那个网站上申请的 proxyServer http://proxy.abuyun.com:9010 # 收费的代理ip服务器地址这里是abuyun proxyUser 用户名 proxyPass 密码 proxyAuth Basic base64.b64encode(proxyUser : proxyPass)class ProxyMiddleware(object):def process_request(self, request, spider):# 设置代理request.meta[proxy] proxyServer# 设置认证request.headers[Proxy-Authorization] proxyAuth4.3 检测代理ip是否可用 在使用了代理ip的情况下可以在下载中间件的process_response()方法中处理代理ip的使用情况如果该代理ip不能使用可以替换其他代理ip class ProxyMiddleware(object):......def process_response(self, request, response, spider):if response.status ! 200:request.dont_filter True # 重新发送的请求对象能够再次进入队列return requst在settings.py中开启该中间件 5. 在中间件中使用selenium 5.1 在爬虫文件中配置好浏览器信 #设置一个无头无可视化界面的浏览器 chrome_options Options() # 无可视化界面 chrome_options.add_argument(--headless) chrome_options.add_argument(--di sable-gpu) # 规避监测 chrome_options.add_experimental_option(excludeSwitches, [enable-automation]) self.browse webdriver.Chrome(optionschrome_options)5.2 在middlewares.py中使用selenium # 开始拦截篡改下载中间件 class NewsSpiderDownloaderMiddleware:# Not all methods need to be defined. If a method is not defined,# scrapy acts as if the downloader middleware does not modify the# passed objects.classmethoddef from_crawler(cls, crawler):# This method is used by Scrapy to create your spiders.s cls()crawler.signals.connect(s.spider_opened, signalsignals.spider_opened)return sdef process_request(self, request, spider):# Called for each request that goes through the downloader# middleware.# Must either:# - return None: continue processing this request# - or return a Response object# - or return a Request object# - or raise IgnoreRequest: process_exception() methods of# installed downloader middleware will be calledreturn None# 该方法拦截四大板块对应的响应对象 且篡改# 注意settings文件中一定要启动对应权限def process_response(self, request, response, spider):# 对需要篡改部分做判断 否则会影响其他请求对应的repsonseif request.url in spider.module_urls: # 获取从爬虫程序中创建出的浏览器对象browse spider.browse# 通过selenium向四大板块的url发起请求获取到动态加载的数据browse.get(request.url)# 下拉翻页browse.execute_script(window.scrollTo(0,document.body.scrollHeight))time.sleep(1.5)# 获取源码page_text browse.page_source#针对定位到的response进行篡改# 这里的篡改指实例化一个新的响应对象(符合需求:包含动态加载的数据)替换(HtmlResponse)原来的响应对象# 参数解释url:响应对应的url body响应体 requests:scrapy中的请求对象数据都是跟着请求对象走的new_response HtmlResponse(urlrequest.url, bodypage_text, encodingutf-8, requestrequest)return new_response # 篡改响应对象 不再经过download直接将新的响应体返回给引擎# 此时就可以回到爬虫文件继续往下写 判断如果是selenium请求过来的我们才返回处理后的new_responseelse:# 其他请求对应的响应对象return response # return responsedef process_exception(self, request, exception, spider):# Called when a download handler or a process_request()# (from other downloader middleware) raises an exception.# Must either:# - return None: continue processing this exception# - return a Response object: stops process_exception() chain# - return a Request object: stops process_exception() chainpassdef spider_opened(self, spider):spider.logger.info(Spider opened: %s % spider.name)配置文件中设置开启该中间件后运行爬虫可以在日志信息中看到selenium相关内容 小结 中间件的使用 完善中间件代码 process_request(self, request, spider) 当每个request通过下载中间件时该方法被调用。返回None值没有return也是返回None该request对象传递给下载器或通过引擎传递给其他权重低的process_request方法返回Response对象不再请求把response返回给引擎返回Request对象把request对象通过引擎交给调度器此时将不通过其他权重低的process_request方法 process_response(self, request, response, spider) 当下载器完成http请求传递响应给引擎的时候调用返回Resposne通过引擎交给爬虫处理或交给权重更低的其他下载中间件的process_response方法返回Request对象通过引擎交给调取器继续请求此时将不通过其他权重低的process_request方法 需要在settings.py中开启中间件 DOWNLOADER_MIDDLEWARES { ‘myspider.middlewares.UserAgentMiddleware’: 543, }
http://www.huolong8.cn/news/96775/

相关文章:

  • 网站优化就是每天更新内容吗网站建设评审
  • 无忧网站建设哪家便宜注册公司网站的步骤
  • 不用代码可以做网站设计吗网站建设计划建议
  • 投标文件网站开发技术部分安徽理工大学新校区建设网站
  • 虚拟产品网站医院网站前置审批
  • 深圳网站建设服务哪家便宜网页框架代码
  • 做ps的赚钱的网站有哪些简单代码制作
  • 东莞seo建站优化收费淘宝代运营多少钱一个月
  • 网站怎么编辑有没有网站做字体变形
  • 网站排名seo培训金融代理平台代理加盟
  • 网站排名软件利搜品牌网站建设相关问题
  • 网站风格分类有哪些中学生制作网站
  • 单位网站中文域名到期续费上海网站建设网站
  • 河南智能网站建设平台淘宝客代理网站怎么做
  • 云南昆明做网站搜索引擎优化的实验结果分析
  • 有没有帮别人做图片的网站赚钱室内设计找工作网站
  • 福田附近公司做网站建设多少钱网站开发端
  • 网站上的充值链接怎么做百度代理
  • 做导航网站赚钱如何设计一个自己的网页
  • 网站用什么布局淄博网站网站建设
  • 自适应网站建设需要注意什么企业展厅的设计公司价格
  • 站长工具seo综合查询权重网络基础架构
  • 美食网站html代码站长权重
  • 一般网站用什么技术做的软装设计师年终总结
  • 菏泽营销网站建设公司wordpress 主题上传后
  • 如何做php网站客户开发软件工具
  • 康桥网站建设seo超级外链工具免费
  • wordpress 不能查看站点美工做图哪个网站好
  • 给别人做网站挣钱盐城网站开发包括哪些
  • 福建巢网站建设响应式网站模板分享