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
定时任务每日执行全量数据爬取
执行任务前需要将昨天的数据表重命名并新建一张表
每台机器可以跑几个商圈
每台机器可以分开跑不同步骤
代码中已经用协程提高并发量,不建议再开多进程
执行python3 spider_main.py并携带参数
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上面)