python爬虫实战(三)--------搜狗微信文章(IP代理池和用户代理池设定----scrapy)
2017-04-04 19:45
711 查看
在学习scrapy爬虫框架中,肯定会涉及到IP代理池和User-Agent池的设定,规避网站的反爬。
这两天在看一个关于搜狗微信文章爬取的视频,里面有讲到ip代理池和用户代理池,在此结合自身的所了解的知识,做一下总结笔记,方便以后借鉴。
浏览器伪装、用户代理池;
IP限制--------IP代理池;
ajax、js异步-------抓包;
验证码-------打码平台。
二.散点知识:
def process_request(): #处理请求
request.meta["proxy"]=.... #添加代理ip
scrapy中如果请求2次就会放弃,说明该代理ip不行。
目标网址:http://weixin.sogou.com/weixin?type=2&query=python&ie=utf8
实现:关于python文章的抓取,抓取标题、标题链接、描述。如下图所示。
数据:数据我就没有保存,此实战主要是为了学习IP和用户代理池的设定,推荐一个开源项目关于搜狗微信公众号:基于搜狗微信的公众号文章爬虫
图1
在这里贴出设置IP和用户代理池的代码,完整代码请移步我的github:https://github.com/pujinxiao/weixin
1.middlewares.py主要代码
2.setting.py主要代码
作者:今孝
出处:http://www.cnblogs.com/jinxiao-pu/p/6665180.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
这两天在看一个关于搜狗微信文章爬取的视频,里面有讲到ip代理池和用户代理池,在此结合自身的所了解的知识,做一下总结笔记,方便以后借鉴。
笔记
一.反爬虫机制处理思路:浏览器伪装、用户代理池;
IP限制--------IP代理池;
ajax、js异步-------抓包;
验证码-------打码平台。
二.散点知识:
def process_request(): #处理请求
request.meta["proxy"]=.... #添加代理ip
scrapy中如果请求2次就会放弃,说明该代理ip不行。
实战操作
相关代码已经调试成功----2017-4-4目标网址:http://weixin.sogou.com/weixin?type=2&query=python&ie=utf8
实现:关于python文章的抓取,抓取标题、标题链接、描述。如下图所示。
数据:数据我就没有保存,此实战主要是为了学习IP和用户代理池的设定,推荐一个开源项目关于搜狗微信公众号:基于搜狗微信的公众号文章爬虫
图1
在这里贴出设置IP和用户代理池的代码,完整代码请移步我的github:https://github.com/pujinxiao/weixin
1.middlewares.py主要代码
# -*- coding: utf-8 -*- import random from scrapy.downloadermiddlewares.httpproxy import HttpProxyMiddleware #代理ip,这是固定的导入 from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware #代理UA,固定导入 class IPPOOLS(HttpProxyMiddleware): def __init__(self,ip=''): '''初始化''' self.ip=ip def process_request(self, request, spider): '''使用代理ip,随机选用''' ip=random.choice(self.ip_pools) #随机选择一个ip print '当前使用的IP是'+ip['ip'] try: request.meta["proxy"]="http://"+ip['ip'] except Exception,e: print e pass ip_pools=[ {'ip': '124.65.238.166:80'}, # {'ip':''}, ] class UAPOOLS(UserAgentMiddleware): def __init__(self,user_agent=''): self.user_agent=user_agent def process_request(self, request, spider): '''使用代理UA,随机选用''' ua=random.choice(self.user_agent_pools) print '当前使用的user-agent是'+ua try: request.headers.setdefault('User-Agent',ua) except Exception,e: print e pass user_agent_pools=[ 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36', ]
2.setting.py主要代码
DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':123, 'weixin.middlewares.IPPOOLS':124, 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware' : 125, 'weixin.middlewares.UAPOOLS':126 }
作者:今孝
出处:http://www.cnblogs.com/jinxiao-pu/p/6665180.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
相关文章推荐
- python爬虫实战--------搜狗微信文章(IP代理池和用户代理池设定----scrapy)
- 【实战\聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎项目笔记】第4章 scrapy爬取知名技术文章网站(1)
- python爬虫实战笔记---以轮子哥为起点Scrapy爬取知乎用户信息
- Python爬虫实战(三) — 微信文章爬虫
- 【实战\聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎项目笔记】第4章 scrapy爬取知名技术文章网站(2)
- nodejs爬虫抓取搜狗微信文章详解
- python scrapy爬取微信公众号文章的爬虫
- python爬虫实战(四)--------豆瓣网的模拟登录(模拟登录和验证码的处理----scrapy)
- python爬虫框架之scrapy安装与当当网爬虫实战
- python3 [爬虫入门实战]scrapy爬取盘多多五百万数据并存mongoDB
- python3 [爬虫入门实战]爬虫之scrapy爬取中国医学人才网
- Python3网络爬虫:Scrapy入门实战之爬取动态网页图片
- 【学习】06 爬虫使用代理地址爬取搜狗微信文章
- Python3[爬虫实战] 爬虫之scrapy爬取爱上程序网存MongoDB(android模块)
- Python爬虫框架Scrapy实战之安装
- Python爬虫框架Scrapy 学习笔记 10.3 -------【实战】 抓取天猫某网店所有宝贝详情
- python爬虫由浅入深13--scrapy基础实战·爬取哈理工教务在线公告
- Python爬虫框架Scrapy实战教程---定向批量获取职位招聘信息
- python3 [爬虫入门实战]爬虫之scrapy安装与配置教程
- Python3[爬虫实战] scrapy爬取汽车之家全站链接存json文件