scrapy结合selenium的使用和代理的问题

1.访问动态网页的方法

首先在middlerware中间键中process_request函数中重新写该方法

from selenium import webdriver
from scrapy.http import HtmlResponse
def process_request(self,request,spider):
  path = r'example_path'
  option = webdriver.ChromeOption()
  option.add_argument('--headless')
  deriver = webdriver.Chrome(excutable_path=path,option=option)
  driver.get("example.com")
  url = driver.current_url
  body = driver.page_source
  res = HtmlResponse(url=url,body=body,encoding='utf-8',request=request)
  # 让界面滚动的方法,同时需要在setting中middleware下载中加入 
  # "scrapy.downloadermiddlewares.useragent.UserAgentMiddleware": None
  js = "var q = document.documentElement.scrollTop = {}"
  for i in range(10):
    driver.excute_script(js.formate(i*200)

  return res

2.ip代理的问题

首先需要在setting配置文件中先定义一个ip池

IPPOOL = [
  { 'ip':''},
  { 'ip':''},
  { 'ip':''},
  { 'ip':''},
  { 'ip':''},
  { 'ip':''},
  { 'ip':''},
]

在middleware中的process_request函数中重新写

# 需要重新定义ip
def __init__(self,ip=''):
  self.ip = ip

# 重新写process_request方法
def process_request(self,request,spider)
  ip = random.choice(IPPOOL)['ip']
  request.meta['proxy'] = 'https://' + ip


# 需要在setting中配置
DOWNLOADER_MIDDLEWARES = {
   # 'daili.middleware.ExampleDownloaderMiddleware': 543,
    'daili.middlewares.ExampleDownloaderMiddleware':222,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':333,
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,350评论 19 139
  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 12,993评论 4 46
  • Refer to: www.threemeal.com/blog/12/ 中间件 中间件是一个钩子框架,它们可以介...
    兰山小亭阅读 16,735评论 9 164
  • 很长一段时间以前,我不仅仅喜欢流浪这个词,而且还爱流浪本身。年纪轻薄,很多词语就带有浓烈的色彩感和画面感,好似走一...
    那个邦尼呀阅读 275评论 0 0
  • 清姝发现,一说保险就容易停不下来。昨天公布了自己选的保险,就有朋友质疑为什么不买终身险。30年后到期了,再买保险岂...
    清姝阅读 1,082评论 4 51

友情链接更多精彩内容