首页 新闻 会员 周边 捐助

Python爬虫,用scrapy框架和scrapy-splash爬豆瓣读书设置代理不起作用,有没有大神帮忙看一下,谢谢

0
悬赏园豆:50 [待解决问题]

用scrapy框架和scrapy-splash爬豆瓣读书设置代理不起作用,代理设置后还是提示需要登录。
settings内的FirstSplash.middlewares.FirstsplashSpiderMiddleware':823和FirstsplashSpiderMiddleware里面的 request.meta['splash']['args']['proxy'] = "'http://112.87.69.226:9999"是从网上搜的,代理ip是从【西刺免费代理IP】这个网站随便找的一个,scrapy crawl Doubanbook打印出来的text
内容是需要登录。有没有大神帮忙看看,感谢!

<br>spider代码:

 name = 'doubanBook'
    category = ''
    def start_requests(self):
        serachBook = ['python','scala','spark']

        for x in serachBook:
            self.category = x
            start_urls = ['https://book.douban.com/subject_search', ]
            url=start_urls[0]+"?search_text="+x
            self.log("开始爬取:"+url)
            yield SplashRequest(url,self.parse_pre)

    def parse_pre(self, response):
        print(response.text)

中间件代理配置:

class FirstsplashSpiderMiddleware(object):
    def process_request(self, request, spider):
        print("进入代理")
        print(request.meta['splash']['args']['proxy'])
        request.meta['splash']['args']['proxy'] = "'http://112.87.69.226:9999"
        print(request.meta['splash']['args']['proxy'])

settings配置:

BOT_NAME = 'FirstSplash'
SPIDER_MODULES = ['FirstSplash.spiders']
NEWSPIDER_MODULE = 'FirstSplash.spiders'
ROBOTSTXT_OBEY = False
#docker+scrapy-splash配置
FEED_EXPORT_ENCODING='utf-8'
#doucer服务地址
SPLASH_URL = 'http://127.0.0.1:8050'
# 去重过滤器
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
# 使用Splash的Http缓存
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'
#此处配置改为splash自带配置
SPIDER_MIDDLEWARES = {
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}

#下载器中间件改为splash自带配置
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
     'FirstSplash.middlewares.FirstsplashSpiderMiddleware':823,
}
# 模拟浏览器请求头
DEFAULT_REQUEST_HEADERS = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
}
whitea的主页 whitea | 初学一级 | 园豆:72
提问于:2019-04-25 16:42
< >
分享
所有回答(1)
0

需要登录是账号权限的问题,ip代理是改变你的请求ip。
看了一下,这个url好像是不需要登录的。
你不用ip代理试试呢?

Masako | 园豆:1893 (小虾三级) | 2019-04-25 17:01

原先不用代理,然后上午一直可以爬,下午就不行了说ip异常让登录,然后我就想刚好试一下这个代理,就按这个帖子上的配了一下https://www.jianshu.com/p/7ec32ee1e9d4,但是我写的代理方法都不打印东西。

支持(0) 反对(0) whitea | 园豆:72 (初学一级) | 2019-04-25 17:08

@whitea: “进入代理”这个打印了吗?
你的代理和这个示例的不一样,他多半是有个代理服务器,配置的是有账号密码的那种,你网站上随便找的,先不说可用性很低,也没有账号密码这些。

支持(0) 反对(0) Masako | 园豆:1893 (小虾三级) | 2019-04-25 17:23

我理解的是不同的代理方式的配置方法可能不一样。

支持(0) 反对(0) Masako | 园豆:1893 (小虾三级) | 2019-04-25 17:26

@whitea:

支持(0) 反对(0) Masako | 园豆:1893 (小虾三级) | 2019-04-25 17:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册