# ZhihuSpider
User spider for www.zhihu.com
## 1.Install python3 and packages
Make sure you have installed python3.
Using pip to install dependencies.
``` bash
pip install Image requests beautifulsoup4 html5lib redis PyMySQL
```
## 2.Database Config
Install `mysql`,create your database.
Import `init.sql` to create your table.
## 3.Install redis
``` bash
# (ubuntu)
apt-get install redis
# or (centos)
yum install redis
# or (macos)
brew install redis
```
## 4.Config your application
Complete config.ini
## 5.Get start
``` bash
python get_user.py
# or command python3
python3 get_user.py
```
## 中文
在我的博客里有代码的详细解读:[我用python爬了知乎一百万用户的数据](http://www.jwlchina.cn/2016/11/04/%E6%88%91%E7%94%A8python%E7%88%AC%E4%BA%86%E7%9F%A5%E4%B9%8E%E4%B8%80%E7%99%BE%E4%B8%87%E7%94%A8%E6%88%B7%E7%9A%84%E6%95%B0%E6%8D%AE/)
数据统计分析:[百万知乎用户数据分析](http://zhihu.jwlchina.cn/)
# 这是一个多线程抓取知乎用户的程序
# Requirements
需要用到的包:
`beautifulsoup4`
`html5lib`
`image`
`requests`
`redis`
`PyMySQL`
pip安装所有依赖包:
``` bash
pip install Image requests beautifulsoup4 html5lib redis PyMySQL
```
运行环境需要支持中文
测试运行环境python3.5,不保证其他运行环境能完美运行
1.**需要安装mysql和redis**
2.**配置`config.ini`文件,设置好mysql和redis,并且填写你的知乎帐号(master分支新版爬虫不需要登陆,但是可能会有时效问题,可以切换至new-ui分支使用)**
可以通过配置`config.ini`文件下的`[sys]` `sleep_time` 控制爬虫速度(尽量使用推荐值,过快容易被知乎封禁),`thread_num`配置线程数目
3.**向数据库导入`init.sql`**
# Run
开始抓取数据:`python get_user.py`
查看抓取数量:`python check_redis.py`
# 效果
![效果图1](http://www.jwlchina.cn/uploads/%E7%9F%A5%E4%B9%8E%E7%94%A8%E6%88%B7%E7%88%AC%E8%99%AB4.png)
![效果图2](http://www.jwlchina.cn/uploads/%E7%9F%A5%E4%B9%8E%E7%94%A8%E6%88%B7%E7%88%AC%E8%99%AB5.png)
# Docker
嫌麻烦的可以参考一下我用docker简单的搭建一个基础环境:
mysql和redis都是官方镜像
```bash
docker run --name mysql -itd mysql:latest
docker run --name redis -itd redis:latest
```
再利用docker-compose运行python镜像,我的python的docker-compose.yml:
``` bash
python:
container_name: python
build: .
ports:
- "84:80"
external_links:
- memcache:memcache
- mysql:mysql
- redis:redis
volumes:
- /docker_containers/python/www:/var/www/html
tty: true
stdin_open: true
extra_hosts:
- "python:192.168.102.140"
environment:
PYTHONIOENCODING: utf-8
```
我的Dockerfile:
``` bash
From kong36088/zhihu-spider:latest
```
多线程知乎用户爬虫,基于python3.rar
需积分: 0 67 浏览量
更新于2023-07-02
收藏 106KB RAR 举报
在日常爬虫工作中,我们有时候会使用单线程或多线程,单线程和多线程进行数据抓取结果还是大有不同的。当单线程python爬虫已经不能满足企业需求时,很多程序员会进行改代码或者增加服务器数量,这样虽说也能达到效果,但是对于人力物力也是一笔不小的消耗。如果是技术牛点的,正常都会自己重新改写多线程代码来实现海量数据的获取。但是要值得注意的事,如果多线程没调配好可能连单线程的效率都比不上。本次就和大家一起聊一聊单线程多线程的一些需要注意的事项。 知识点 线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属的一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。这里简单的举例下单线程和多线程之间的差别 单线程
野生的大熊
- 粉丝: 235
- 资源: 246
最新资源
- 基于SSA的CSSA算法复现:改进混沌初始化与扰动策略、测试函数分析与对比研究,麻雀搜索算法(SSA)文章复现(改进Tent混沌初始化+改进Tent混沌扰动+高斯扰动)-CSSA 复现内容
- joda-convert-javadoc-1.3-5.el7.x64-86.rpm.tar.gz
- joda-time-2.2-3.tzdata2013c.el7.x64-86.rpm.tar.gz
- 自主开发的两工位独立协同运行自动锁螺丝设备PLC程序,配备三菱伺服转盘与信捷人机界面,自动锁螺丝设备PLC及人机程序,自主开发,有备注 两台打螺丝机两个工位独立协同运行,三菱伺服转盘,手自动模式,可选
- joda-time-javadoc-2.2-3.tzdata2013c.el7.x64-86.rpm.tar.gz
- jose-10-1.el7.x64-86.rpm.tar.gz
- 基于遗传算法优化的VMD信号去噪算法:样本熵与信噪比双重适应度函数提升信噪比信号处理特征提取研究,Matlab 基于遗传算法优化的VMD信号去噪算法 创新点:基于样本熵作为适应度函数 创新点2:基于
- jsch-0.1.50-5.el7.x64-86.rpm.tar.gz
- MATLAB四旋翼仿真中的滑模控制、反步控制与PID控制方法及公式文献参考,MATLAB四旋翼仿真 滑模控制 simulink 三种控制方法 有公式和文献参考 1.滑模SMC 2.反步控制 ba
- jsch-demo-0.1.50-5.el7.x64-86.rpm.tar.gz
- "S32K144 Bootloader:涵盖CAN与串口通信,上下位机开源学习指南,PCAN设备支持,C#上位机环境,专业代码解释与烧录指南",S32K144的bootloader,包括CAN和串口的
- jsch-javadoc-0.1.50-5.el7.x64-86.rpm.tar.gz
- json-c-0.11-4.el7-0.x64-86.rpm.tar.gz
- 基于S7-200 PLC与组态王技术的球类大小分拣系统实现,基于S7-200 PLC和组态王大小球大小分拣 ,基于S7-200 PLC; 组态王; 大小球; 分拣; 大小分选,基于S7-200 PLC
- json-c-devel-0.11-4.el7-0.x64-86.rpm.tar.gz
- 基于Matlab的综合能源系统优化调度策略研究:考虑综合需求响应与阶梯型碳交易机制的影响,matlab复现,考虑综合需求响应和阶梯型碳交易机制的综合能源系统优化调度策略 关键词,综合能源系统,碳交易