Python爬网获取全国各地律师电话号
[本文出自天外归云的博客园]
从64365网站获取全国各地律师电话号,用到了python的lxml库进行对html页面内容的解析,对于xpath的获取和正确性校验,需要在火狐浏览器安装firebug和firepath插件。页面内容如下(目标是爬“姓名+电话”):

代码如下:
# coding:utf-8
from lxml import etree
import requests,lxml.html,os class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value) def get_lawyers_info(url):
r = requests.get(url)
html = lxml.html.fromstring(r.content)
phones = html.xpath('//span[@class="law-tel"]')
names = html.xpath('//div[@class="fl"]/p/a')
if(len(phones) == len(names)):
list(zip(names,phones))
phone_infos = [(names[i].text, phones[i].text_content()) for i in range(len(names))]
else:
error = "Lawyers amount are not equal to the amount of phone_nums: "+url
raise MyError(error)
phone_infos_list = []
for phone_info in phone_infos:
if(phone_info[1] == ""):
#print phone_info[0],u"没留电话"
info = phone_info[0]+": "+u"没留电话\r\n"
#print phone_info[0],phone_info[1]
else:
info = phone_info[0]+": "+phone_info[1]+"\r\n"
print info
phone_infos_list.append(info)
return phone_infos_list def get_pages_num(url):
r = requests.get(url)
html = lxml.html.fromstring(r.content)
result = html.xpath('//div[@class="u-page"]/a[last()-1]')
pages_num = result[0].text
if pages_num.isdigit():
return pages_num def get_all_lawyers(cities):
dir_path = os.path.abspath(os.path.dirname(__file__))
print dir_path
file_path = os.path.join(dir_path,"lawyers_info.txt")
print file_path
if os.path.exists(file_path):
os.remove(file_path)
#input()
with open("lawyers_info.txt","ab") as file:
for city in cities:
#file.write("City:"+city+"\n")
#print city
pages_num = get_pages_num("http://www.64365.com/"+city+"/lawyer/page_1.aspx")
if pages_num:
for i in range(int(pages_num)):
url = "http://www.64365.com/"+city+"/lawyer/page_"+str(i+1)+".aspx"
info = get_lawyers_info(url)
for each in info:
file.write(each.encode("gbk")) if __name__ == '__main__':
cities = ['beijing','shanghai','guangdong','guangzhou','shenzhen','wuhan','hangzhou','ningbo','tianjin','nanjing','jiangsu','zhengzhou','jinan','changsha','shenyang','chengdu','chongqing','xian']
get_all_lawyers(cities)
这里对热门城市进行了爬网,输入结果如下(保存到了当前目录下的“lawyers_info.txt”文件中):

Python爬网获取全国各地律师电话号的更多相关文章
- Python爬网——获取安卓手机统计数据
[本文出自天外归云的博客园] 1. 在安卓网上对热门机型进行爬网,取前五十: # -*- coding: utf-8 -*- import requests,re from bs4 import Be ...
- Docker最全教程之Python爬网实战(二十一)
Python目前是流行度增长最快的主流编程语言,也是第二大最受开发者喜爱的语言(参考Stack Overflow 2019开发者调查报告发布).笔者建议.NET.Java开发人员可以将Python发展 ...
- python下载文件(图片)源码,包含爬网内容(爬url),可保存cookie
#coding=utf-8 ''' Created on 2013-7-17 @author: zinan.zhang ''' import re import time import httplib ...
- Jsoup获取全国地区数据(省市县镇村)(续) 纯干货分享
前几天给大家分享了一下,怎么样通过jsoup来从国家统计局官网获取全国省市县镇村的数据.错过的朋友请点击这里.上文说到抓取到数据以后,我们怎么转换成我们想要格式呢?哈哈,解析方式可能很简单,但是有一点 ...
- python爬取天气后报网
前言 大二下学期的大数据技术导论课上由于需要获取数据进行分析,我决定学习python爬虫来获取数据.由于对于数据需求量相对较大,我最终选择爬取 天气后报网,该网站可以查询到全国各地多年的数据,而且相对 ...
- Python学习-使用Python爬取陈奕迅新歌《我们》网易云热门评论
<后来的我们>上映也有好几天了,一直没有去看,前几天还爆出退票的事件,电影的主题曲由陈奕迅所唱,特地找了主题曲<我们>的MV看了一遍,还是那个感觉.那天偶然间看到Python中 ...
- python爬取当当网的书籍信息并保存到csv文件
python爬取当当网的书籍信息并保存到csv文件 依赖的库: requests #用来获取页面内容 BeautifulSoup #opython3不能安装BeautifulSoup,但可以安装Bea ...
- Python 爬取赶集网租房信息
代码已久,有可能需要调整 #coding:utf-8 from bs4 import BeautifulSoup #有这个bs4不用正则也可以定位要爬取的内容了 from urlparse impor ...
- 全国315个城市,用python爬取肯德基老爷爷的店面信息
我觉得我生活在这世上二十多年里,去过最多的餐厅就是肯德基小时候逢生日必去,现在长大了,肯德基成了我的日常零食下班后从门前路过饿了便会进去点分黄金鸡块或者小吃拼盘早上路过,会买杯咖啡.主要快捷美味且饱腹 ...
随机推荐
- 用onerror处理图片获取失败问题
<script> function errorImg(){ //当前事件的源 var obj=event.srcElement; //需要修改的图片的url obj.src="h ...
- ASP.NET Core 添加日志NLog
1.在Nuget上搜索 NLog.Extensions.Logging 安装最新版 2.添加日志配置文件,在项目指定目录下添加配置文件nlog.config,内容添加如下: <?xml vers ...
- 终端启动apache,mysql服务;登录mysql服务器
sudo apachectl start sudo mysql.server start sudo apachectl help 查看帮助 mysql -hlocalhost -uroot -p ma ...
- Android 使用Socket进行通信(Android)
一.服务器程序 服务器程序需要在PC上运行,该程序比较的简单,因此不需要建立Android项目,直接定义一个JAVA类,并且运行该类即可.它仅仅建立ServerSocket监听,并使用Socket获取 ...
- chrome新版安装flash控件失败解决方法
今天chrome打开后出现插件过期,之后更新一直安装失败 度娘找到一个方法: 1.下载flash最新版for chrome : https://fpdownload.macromedia.com/pu ...
- Java中的Atomic包使用指南
Atomic包介绍 在Atomic包里一共有12个类,四种原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原子更新字段.Atomic包里的类基本都是使用Unsafe实现的包装类. 原 ...
- python之面向对象编程
1.面向对象介绍: 世界万物,皆可分类 世界万物,皆为对象 只要是对象,就肯定属于某种类 只要是对象,就肯定有属性 2. 面向对象的几个特性: class类: 一个类即对一类拥有相同属性的对象的抽象, ...
- Python之路----------基础 一(数据类型、变量、基本语法、流程控制)
一. 数据类型与变量 1.数据类型 整数 #Python在程序中的表示方法和数学上的写法一模一样,-1,0,1都是整数. 浮点数 1 #浮点数就是小数. 字符串 1 #在Python中字符串是以 ...
- Displaying Data in a Chart with ASP.NET Web Pages (Razor)
This article explains how to use a chart to display data in an ASP.NET Web Pages (Razor) website by ...
- Javascript 中判断对象为空
发现了一个巧妙的实现: 需要检查一个对象(Object)是否为空,即不包含任何元素.Javascript 中的对象就是一个字典,其中包含了一系列的键值对(Key Value Pair).检查一个对象是 ...