整体爬虫逻辑:

1.获取省份和城市的定位,然后定位出各个城市和相对应的url

2.获取到 130 xx号段 (共317个)中的xxx个

3.获取最终的号段号码

先贴上源码

#抓取省份及城市

import requests

from lxml import etree

url='http://www.51hao.cc/'

req=requests.get(url)

req.encoding='gb2312'

html=req.text

select=etree.HTML(html)

infos=select.xpath('//div[@class="fkce"]/div[@class="fkt"][position()>1]')

#print(len(infos)) #核对下省的数量是否一致

for info in infos:

#定位省的地址

province=info.xpath('div[@class="fkbj"]/p/a/text()')[0]

#print(province)

#定位城市

citys=info.xpath('div[@class="fklk"]/p/a/text()')

#print(citys)

#城市的url

city_urls = info.xpath('div[@class="fklk"]/p/a/@href')

#print(province,citys,city_urls)

city_infos = zip(citys, city_urls) #zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。

#print(city_infos)

for city_info in city_infos:

city=city_info[0]

#print(city)

city_url=city_info[1]

#print(province,city,city_url)

url2 = 'http://www.51hao.cc/city/beijing/beijing.php'

req2 = requests.get(url2)

req2.encoding = 'gb2312'

html2 = req2.text

selector2 = etree.HTML(html2)

infos = selector2.xpath('//div[@class="all"]//div[@class="num_bg"]')

num = len(infos)

# print(num) #打印出共有多少个

for i in range(num):

first_3 = selector2.xpath('//div[@class="all"]/div[%s]/div[1]/span[@class="nums"]/text()' % str(i + 2))[

0] # 号码段前三位

# print(first_3)

types = selector2.xpath('//div[@class="all"]/div[%s]/div[1]/text()' % str(i + 2))[0] # xx号段 (共xxx个)

# print(types)

mobiles = selector2.xpath('//div[@class="all"]/ul[%s]/li/a/text()' % str(i + 1)) # 号码段内的号码

# print(mobiles)

type1 = types.split(" ")[0] # 获取xx号段 (共xxx个)中xx号段

# print(type1)

total = types.split(' ')[1].replace('(共', '').replace('个)', '') # 获取(共xxx个)中的xxx

# print(total)

# print(i+2,first_3,type1,total,mobiles)

for mobile in mobiles:

#print(i + 2, first_3, type1, total, mobile)

print(province, city, first_3, type1, total, mobile)

爬虫结果

关于定位的问题:

1. infos=select.xpath('//div[@class="fkce"]/div[@class="fkt"][position()>1]')

第一个div[class="fkce"]下可以找到省份和城市,可是div[@class="fkce"]下第一个div[@class="fkt"]下的第一个为各省市号段的那一列,要过滤掉第一个div,这里用到position()过滤第一div内的内容。

2. city_infos = zip(citys, city_urls) #把city是,和city_urls返回一个元祖,再去取里面的值

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。只能在循环中打印出来。在循环中元祖中选出城市与相对应的url打印出来

城市的获取

在循环中元祖中选出城市与相对应的url打印出来

3. infos=selector.xpath('//div[@class="all"]//div[@class="num_bg"]') #在这个范围内找到 获取到 130 xx号段 (共317个)中的xxx个

WX20170904-170305@2x.png

4. first_3 = selector.xpath('//div[@class="all"]/div[%s]/div[1]/span[@class="nums"]/text()'%str(i+2))[0] #号码段前三位

用到了【 】方法

div[%s] %str(i+2))过滤第一个

5. types = selector.xpath('//div[@class="all"]/div[%s]/div[1]/text()' % str(i + 2))[0] #xx号段 (共xxx个)

mobiles = selector.xpath('//div[@class="all"]/ul[%s]/li/a/text()' % str(i + 1)) #号码段内的号码

6. type1=types.split(" ")[0] #获取xx号段 (共xxx个)中xx号段

total = types.split(' ')[1].replace('(共', '').replace('个)', '') #获取(共xxx个)中的xxx

最后把获取的连接到一起打印出来

for mobile in mobiles:

print(province, city, first_3, type1, total, mobile)

python 爬手机号_【Python爬虫】手机号网段爬虫相关推荐

  1. python爬取京东python书籍信息

    python爬取京东python书籍信息 直接上代码镇宅......................... 需要用到的库:requests lxml pymongo 需要安装这些库,并且配置好mong ...

  2. 【爬虫】Python爬取新浪微博别人关联手机号

    爬取新浪微博别人关联手机号 1.利用个人注册,根据前端对手机号的判断逻辑,一但显示已注册便将手机号进行保存 2.将保存的手机号上传到手机号码簿 3.在手机端的好友添加中,使用通讯录同步进行添加好友(手 ...

  3. python爬电影_使用Python多线程爬虫爬取电影天堂资源

    最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...

  4. python 反爬策略_如何应对网站反爬虫策略?如何高效地爬大量数据?

    爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),这之间的斗争恢宏壮阔... Day 1 小莫想要某站上所有的电影,写了标准的爬虫(基于HttpCl ...

  5. python爬音乐评论生成词云图_python爬虫+词云图,爬取网易云音乐评论

    又到了清明时节,用python爬取了网易云音乐<清明雨上>的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况.看到 ...

  6. python爬取去哪网数据_Python爬虫入门:使用Python爬取网络数据

    1 网络爬虫 引用百度百科的定义:网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 简单的说,就是有一个程序可以自动去访问网页. 2 Python爬虫 如何实现爬虫? 简单的讲,一共 ...

  7. (伪)Python爬取猫眼电影(反反爬虫过程中遇到的坑)

    Python爬取猫眼电影 1.打开一个猫眼电影的URL,例如本月的较火的电影<毒液:致命守护者>http://maoyan.com/films/42964 直接F12,查看审核元素,发现上 ...

  8. 用python爬小说_使用python+Scrapy爬小说

    图片来源网络 写在前面 最近在学习python,不得不说python真是好用,至少生成程序的速度快,语法也比较简单 ヾ(◍°∇°◍)ノ゙ 感觉很强大,之前怎么就没有想到学一下这个呢,如果大学抢课的时候 ...

  9. python爬百度翻译-Python爬取百度翻译(利用json提取数据)

    本篇文章给大家带来的内容是关于Python爬取百度翻译(利用json提取数据),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 工具:Python 3.6.5.PyCharm开发工具. ...

  10. python 病毒 基因_#Python#提取基因对应的蛋白质名

    提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...

最新文章

  1. 洛谷—— P1875 佳佳的魔法药水
  2. Guestfish 使用说明
  3. docker images 详解
  4. 机器学习之模型——保存与加载
  5. Taro+react开发(51) 数组对象和数组得处理
  6. 不小心执行了 rm -rf,除了跑路还有其他办法吗?
  7. ser crt linux 乱码,大师为你解决securecrt中文乱码【处理指南】
  8. java 怎么控制暂停5秒钟_java – libGDX暂停运行几秒钟
  9. Opencv之生成棋盘标定板
  10. 指向结构体变量的指针变量
  11. 平民级NER︱pycrfsuite的介绍与应用
  12. 在JavaScript中使用JSON
  13. 地理坐标系与投影坐标系
  14. Sword38——字符串的排列
  15. 构建新型现代化智慧博物馆之物联网环境监控方案
  16. 企业要怎样做才能避免进入直播带货误区?
  17. [2023年的每一天]1. 15 看了一天的 B站
  18. html DOM------document
  19. 让IIS支持PHP (转载)
  20. 彻底清除SMSS.EXE病毒

热门文章

  1. matlab求解拉格朗日第一方程,matlab求解拉格朗日方程肿么编程
  2. 学环境艺术设计的 考计算机,环境艺术设计专业升本要考哪些科目?
  3. 有哪些培训管理教务系统?染书CRMA,进销存管理明细清晰
  4. GRE词汇竟然六小时背一遍
  5. 详解动态代理及其实现原理
  6. 联想硬盘保护系统 安装详解
  7. 配置Ubuntu软件源
  8. 影视大全android,影视大全下载-影视大全 安卓版v3.4.6-PC6安卓网
  9. 百度网盘合集 没有不够全 只有你网盘不够大!!!
  10. 如何做好企业SWOT分析?用这个企业项目设计工具就足够了!