Author | CreateDate | ProjectName | ChineseName |
---|---|---|---|
Tau Woo | 2018-01-17 | spider_lianjia | 链家网 租房房源信息爬虫(一期) |
- 1 使用requests读取网页、获取Api返回数据
- 1.1 使用端口转发修改请求IP和使用不同的User-Agent来欺骗被爬取的服务器
- 2 使用BeautifulSoup(lxml)解析网页
- 3 使用正则匹配获取想要取用的数据字段
- 4 将获取的数据保存到数据库,并依赖数据库的UNIQUE KEY的唯一性来保证某一日数据的唯一性
Linux Deepin-15.5 (Debian 6.3.0-11)
# 安装 Python3 和 pip
sudo apt-get install python3
sudo apt-get install python3-pip
# 安装 BeautifulSoup
sudo apt-get install python-bs4
# 安装Redis
sudo apt-get install redis-server
# 安装依赖库
pip3 install requests
pip3 install beautifulsoup4
pip3 install lxml
pip3 install PyMySQL
pip3 install gevent
pip3 install fake-useragent
pip3 install redis
########## 以下为可选安装库 ##########
# 以下为使用socket5代理需要安装,其中PySocks可能会在上一个命令中自动安装
pip3 install requests\[socks\]
pip3 install PySocks
- 定时任务每日执行全量数据爬取
- 执行任务前需要将昨天的数据表重命名并新建一张表
- 每台机器可以跑几个商圈
- 每台机器可以分开跑不同步骤
- 代码中已经用协程提高并发量,不建议再开多进程
- create - 爬虫第一步:爬取筛选页面,筛选条件是页数小于100的地标
- page - 爬虫第二步:爬取详情页面,从数据库头遍历
- stat - 爬虫第三步:爬取内置统计接口,从数据库头遍历
- redis - 爬虫第四步:将第二步爬虫失败的房源存入Redis后,以更小的粒度重新爬取数据
编号 | 命令 | 说明 |
---|---|---|
1 | python3 spider_main.py | 读取程序根目录下task.csv文件中的商圈名称,并依次执行第1、2、3、4步。 |
2 | python3 spider_main.py create | 从task.csv文件中获取待爬取商圈,同时执行爬虫第一步(写入lianjia_house_info表中) |
3 | python3 spider_main.py page | 从lianjia_house_info表中第一个开始往后以某一固定步长请求房源详情页面,更新第一步未获取到的字段 |
4 | python3 spider_main.py stat | 从lianjia_house_info表中第一个开始往后以某一固定步长请求房源销售接口,更新第一步未获取到的字段,并插入json到lianjia_house_stat_json表中 |
5 | python3 spider_main.py all | 爬取所有商圈的所有房源,并且执行所有步骤 |
6 | python3 spider_main.py all1 | 先获取所有商圈的列表 后爬取所有商圈的所有房源,并且执行所有步骤 |
7 | python3 spider_main.py create [argv1] | 从参数中获取待爬取商圈,同时执行爬虫第一步(写入lianjia_house_info表中) |
8 | python3 spider_main.py page [argv1] | 从参数中获取并发量,同时执行爬虫第二步(写入lianjia_house_info表中) |
9 | python3 spider_main.py stat [argv1] | 从参数中获取并发量,同时执行爬虫第三步(写入lianjia_house_info和lianjia_house_stat_json表中) |
10 | python3 spider_main.py spider [argv1] | 从参数中获取待爬取商圈,同时执行爬虫第1、2、3、4步(写入lianjia_house_info和lianjia_house_stat_json表中) |
11 | python3 spider_main.py redis | 将第二步爬虫失败的房源存入Redis后,以更小的粒度重新爬取数据 |
12 | python3 spider_main.py redis [argv1] | 将第二步爬虫失败的房源存入Redis后,以[argv1]的粒度重新爬取数据 |
编号 | 程序名 | 功能 |
---|---|---|
1 | database_operator | 数据库操作模块,主要功能是将已经跑批完成的数据表备份为后缀时间,同时新建表来 |
2 | install_operator | 爬虫程序安装子模块,主要功能是配置可能会有的配置文件(这些文件不会被上传到git上面) |