鱼C论坛

 找回密码
 立即注册
查看: 2339|回复: 8

[已解决]请问怎么把代理ip的代码结合到scrapy爬虫代码中呢

[复制链接]
发表于 2017-4-4 16:40:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是代理ip的代码 已经测试可用的
  1. proxy_support = urllib.request.ProxyHandler({'http':'183.56.177.130:808'})
  2.     opener = urllib.request.build_opener(proxy_support)
  3.     opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36')]

  4.     urllib.request.install_opener(opener)

  5.     response = urllib.request.urlopen(start_urls)
  6.     html = response.read().decode('utf-8')
复制代码


然后自己写的爬虫因为爬的频繁被禁止访问了...囧

目前只是想使用代理ip 然后继续去爬那个网站...以下是已经实现的爬虫代码
  1. # -*- coding: utf-8 -*-
  2. import scrapy
  3. from lagou.items import LagouItem
  4. from scrapy.http import Request

  5. class LagouSpiderSpider(scrapy.Spider):
  6.     name = "lagou_spider"
  7.     allowed_domains = ["www.lagou.com"]
  8.     url2 = 'https://www.lagou.com/zhaopin/houduankaifa/'
  9.     start_urls = [str(url2)]+['1']


  10.     def parse(self,response):
  11.       
  12.         
  13.         sites = response.xpath('//*[@id="s_position_list"]/ul/li/div[1]')
  14.         for site in sites:
  15.             item = LagouItem()
  16.             item['position_name'] = site.xpath('div[1]/div[1]/a/h2/text()').extract()
  17.             item['addr'] = site.xpath('div[1]/div[1]/a/span/em/text()').extract()
  18.             item['company_name'] = site.xpath('div[2]/div[1]/a/text()').extract()
  19.             item['salary'] = site.xpath('div[1]/div[2]/div[1]/span/text()').extract()
  20.             exp = site.xpath('div[1]/div[2]/div[1]/text()').extract()[2].rstrip()
  21.             item['experience'] = exp
  22.             item['url'] = site.xpath('div[1]/div[1]/a/@href').extract()
  23.             for url in response.xpath('//*[@id="s_position_list"]/ul/li/div[1]/div[1]/div[1]/a/@href').extract():
  24.                 yield Request(url,meta={'item':item},callback=self.parse2)
  25.             

  26.             urls = site.xpath('//*[@id="order"]/li/div[4]/a[2]/@href').extract()
  27.             for li in urls:
  28.                 yield Request(li, callback = self.parse)

  29.     def parse2(self,response):
  30.         item = response.meta['item']
  31.         item['desc'] = response.xpath('//*[@id="job_detail"]/dd[2]/div/p').extract()
  32.         yield item
复制代码


就是不太清楚要将两个代码结合到一块的时候那个代理ip代码的位置应该放在哪里呢...好像放哪都出错...求指导
最佳答案
2017-4-5 09:59:18
http://brucedone.com/archives/88
参考下用这个 亲测可用
只需要将里面把代理服务器这一段修改一下
  1. def process_request(self, request, spider):
  2.         ua = random.choice(settings.get('USER_AGENT_LIST'))
  3.         spider.logger.info(msg='now entring download midware')
  4.         if ua:
  5.             request.headers['User-Agent'] = ua
  6.             # Add desired logging message here.
  7.             spider.logger.info(
  8.                 u'User-Agent is : {} {}'.format(request.headers.get('User-Agent'), request)
  9.             )
  10.         pass
复制代码

把你的代理IP加进去就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-4 21:31:32 | 显示全部楼层
试试random.choice?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-5 09:59:18 | 显示全部楼层    本楼为最佳答案   
http://brucedone.com/archives/88
参考下用这个 亲测可用
只需要将里面把代理服务器这一段修改一下
  1. def process_request(self, request, spider):
  2.         ua = random.choice(settings.get('USER_AGENT_LIST'))
  3.         spider.logger.info(msg='now entring download midware')
  4.         if ua:
  5.             request.headers['User-Agent'] = ua
  6.             # Add desired logging message here.
  7.             spider.logger.info(
  8.                 u'User-Agent is : {} {}'.format(request.headers.get('User-Agent'), request)
  9.             )
  10.         pass
复制代码

把你的代理IP加进去就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-5 13:11:06 | 显示全部楼层
lumber2388779 发表于 2017-4-5 09:59
http://brucedone.com/archives/88
参考下用这个 亲测可用
只需要将里面把代理服务器这一段修改一下

你好请问添加后的代码这个样子对吗
  1. def process_request(self, request, spider):
  2.         ua = random.choice(settings.get('USER_AGENT_LIST'))
  3.         spider.logger.info(msg='now entring download midware')
  4.         if ua:
  5.             request.headers['User-Agent'] = ua
  6.             
  7.             # Add desired logging message here.
  8.             proxy_support = urllib.request.ProxyHandler({'http':'183.56.177.130:808'})
  9.             opener = urllib.request.build_opener(proxy_support)
  10.             opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36')]
  11.             urllib.request.install_opener(opener)

  12.             
  13.             spider.logger.info(
  14.                 u'User-Agent is : {} {}'.format(request.headers.get('User-Agent'), request)
  15.             )
  16.         pass
复制代码


我改好之后单独运行了一下 什么反应也没有 也没有报错 这样是配置成功了吗...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-5 13:50:51 | 显示全部楼层
Shyanne 发表于 2017-4-5 13:11
你好请问添加后的代码这个样子对吗

你按照我发给你的帖子步骤做了吗?那里面才是详细步骤
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-5 13:53:27 | 显示全部楼层
lumber2388779 发表于 2017-4-5 09:59
http://brucedone.com/archives/88
参考下用这个 亲测可用
只需要将里面把代理服务器这一段修改一下

啊我爬出来了 谢谢谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-5 13:54:14 | 显示全部楼层

恩恩 谢谢 按照楼下的方法运行成功了的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-5 13:55:30 | 显示全部楼层
lumber2388779 发表于 2017-4-5 13:50
你按照我发给你的帖子步骤做了吗?那里面才是详细步骤

做了的 刚刚出错 因为没把那个中间件的路径给填对 现在好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-5 13:58:34 | 显示全部楼层
Shyanne 发表于 2017-4-5 13:55
做了的 刚刚出错 因为没把那个中间件的路径给填对 现在好了

那就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 12:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表