前几天老妈叫我帮她选个好点的百度圣卡号码,突然想起了最近学的python爬虫正好练练手。最开始用urllib爬,post提交参数想直接取到返回的号码数据,可无奈,不知道是自己能力还不够还是电信反爬虫机制做的好。post数据后返回的提示总是
"message":"请求参数为空或者请求参数不符合JSON格式或者没有公共请求参数或者页面请求参数没有接口名称字段或者页面请求参数没有业务参数请求节点或者页面请求接口没有配置"
尝试了一天之后索性放弃。然后便想起了Selenium来模拟点击获取号码。
下面是实现方法(功能比较简单,很多细节也还没完善好)
准备阶段工具:
1.Python
2.Selenium
3.Chrome浏览器
实现思路:
1.寻找页面省份地区等元素并点击
2.找到返回到html页面的手机号码并读取
3.用正则筛选出靓号并保存
步骤一:获取页面元素
百度圣卡申请URL地址:
F12查看页面元素可以看到省份选择框在ID为"dk_container_baiducardDetail_provinceSelec"的Div下并且省份名字与代码在li里,以"福建省"为例可以看到福建省的代码为60015
同样的我们可以其他所需元素位置。
需找到页面元素汇总如下:
省份选择框ID: dk_container_baiducardDetail_provinceSelect
省份代码(以福建省为例): 60015
地区选择框ID: dk_container_baiducardDetail_citySelect
地区代码(以厦门市为例): 8350200
号码显示按钮ID: baiducardDetail_showSelectNum
号码显示详情窗口Class: baiducardDetail_phoneNum
换一批号码按钮Class: