diff --git a/README.md b/README.md index 6376748..59134b1 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,95 @@ # python +## Scrapy-Redis-Zhihu项目介绍 + +1. 基于scrapy-redis实现分布式爬虫,爬取知乎所有问题及对应的回答; +2. 集成selenium模拟登录知乎,并处理英文验证码及倒立文字验证码的识别; +3. 通过Twisted将MySQL 入库操作变成异步化执行; +4. 集成bloomfilter对URL进行去重; +5. 随机生成User-Agent、IP代理应该反爬; +6. 通过scrapy信号机制,统计爬取的URL总数; +7. 通过Scrapy数据收集机制,获取爬取失败的URL,并写入到json文件中,方便后期进行分析。 + +## Scrapy-Redis-Zhihu项目结构介绍 + +captcha: 存放知乎登录页面英文验证码或倒立文字验证码图片 + +cookies: 存放登录之后获取到的cookies + +failed_urls: 存放爬取失败的url信息 + +libs:存放Scrapy编写过程中需要用到的函数 + +libs.bloomfilter: 布隆过滤器,对url进行去重 + +libs.chaojiying: 英文验证码识别 + +libs.common: 其他函数 + +libs.proxy: 获取西刺ip代理 + +spiders: 项目文件 + +zheye: 倒立文字验证码识别相关文件 + +## Scrapy-Redis-Zhihu重要方法介绍 + +spiders.zhihu.py: +get_cookies:模拟登录知乎,将登录后的cookies写入文件中,并返回登录之后的cookies + +deal_with_chinese_captcha: 倒立验证码的识别 + +deal_with_english_captcha: 英文验证码的识别 + +middlewares.RedirectDealDownloaderMiddleware.process_response: 因为scrapy-redis中的start_requests已经被重写过了,无法将登录后的cookies传入到Response中,所以在这里进行捕获登录页面,模拟登录,并将获取登录后的cookies并传入到Response中,同时处理302重定向到登录页面问题 + +## 如何使用 +### 安装依赖 +``` +git clone https://github.com/Yanxueshan/Scrapy-Redis-Zhihu.git +cd Scrapy-Redis-Zhihu +pip install -r requirements.txt +``` + +### 参数修改 +settings.py中的某些参数需要修改 + +这是数据库MySQL相关配置,修改为自己的MySQL配置 +``` +MYSQL_HOST = 'localhost' +MYSQL_DBNAME = 'zhihu' +MYSQL_USER = 'root' +MYSQL_PASSWORD = 'root' +``` + +这是知乎的账号和密码,供模拟登录使用,修改为自己的知乎账号和密码 +``` +ZHIHU_ACCOUNT = 'username' +ZHIHU_PASSWORD = 'password' +``` + +这是超级鹰的账号,用来识别英文验证码,修改为自己的超级鹰账号(也可以换成其他第三方平台,不过相应的zhihu.py中的代码要改变) +``` +CHAOJIYING_ACCOUNT = 'username' +CHAOJIYING_PASSWORD = 'password' +CAPTCHA_TYPE = '898966' +``` + +### 运行前准备 +切换到redis安装目录下,启动redis-server +``` +cd redis +redis-server.exe redis.windows.conf +``` +另起一个窗口,启动redis-cli +``` +cd redis +redis-cli +``` + +### 运行 +``` +redis-cli lpush zhihu:start_urls http://www.zhihu.com/signin +cd Scrapy-Redis-Zhihu +python main.py +```