1、通过火狐浏览器,查找大长安铃木官网中关于经销商的信息主要在两个网页中

http://www.changansuzuki.com/khfw/xml/pro.xml  地域信息

http://www.changansuzuki.com/khfw/sqcx.php  查询经销商具体信息

2、第一步解析地域信息

上面的图为xml中的格式

3、解析XML文件主要代码

     def get_area_list(self):
"""获取地域省份和城市名称字典"""
page = urllib2.urlopen(self.xml_url).read()
area_list = {}
root = ElementTree.fromstring(page)
#读取xml格式文本
for onep in root:
province = onep.get('name')
#父标签中的name数据(province中)
city_list = []
for onec in onep:
#子标签中的name数据(city中)
city = onec.get('name')
city_list.append(city)
area_list[province] = city_list
#返回一个省份与城市关系的字典,即:{省份名称:[城市名称1,城市名称2,···]}
return area_list

3、得到每个城市经销商信息主要代码

  def get_post_data(self,province=None,city=None):
'''得到每个城市经销商信息'''
city1 = city.encode('utf8')
#将数据转码为utf8
province1 = province.encode('utf8')
ctxt = PyV8.JSContext()
ctxt.enter()
#使用python执行js代码的准备
func = ctxt.eval('''(function(){return (new Date())})''')
#通过代码得到js格式的时间
params = { 'act':'',
'city':city1,
'date':func(),
'name':'',
'pro':province1,
'ty':'',
}
#整理post数据
data = urllib.urlencode(params)
req = urllib2.Request(self.index_url,data)
page =urllib2.urlopen(req).read().decode('utf8')
#通过提交post数据得到相应的结果数据
if page != 'sorry':
#判断结果是否符合需求
dealers = page.split('@@')
i = 0
dealerlist =[]
while i < len(dealers):
dealerinfo = {}
j = 0
dealer = dealers[i].split('|')
dealerinfo[Constant.PROVINCE] = province
dealerinfo[Constant.CITY] = city
dealerinfo[Constant.NAME] = dealer[0]
dealerinfo[Constant.ADDRESS] = dealer[1]
dealerinfo[Constant.SALETEL] = dealer[2]
if len(dealer) ==6:
dealerinfo[Constant.URL] = dealer[3]
elif len(dealer) == 5:
dealerinfo[Constant.URL] = ''
else:
print '###############'
print dealer[0] +' ' +province
print '###############'
dealerlist.append(dealerinfo)
i+=1
self.saver.add(dealerlist)

4、最终整合方法实现功能

     def deal_dealers_info(self):
areas = self.get_area_list()
for area in areas:
province = area
#得到省份名称
for area_city in areas[area]:
city = area_city
#得到城市名称
self.get_post_data(province,city)
#调用经销商处理方法
self.saver.commit()
#保存excel

长安铃木经销商爬取(解析xml、post提交、python中使用js代码)的更多相关文章

  1. 写一个python 爬虫爬取百度电影并存入mysql中

    目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...

  2. 一个爬取Bing每日壁纸的python脚本

    1. 背景 Bing搜索每天的背景图片有些比较适合做桌面,但是有的提供下载有的不提供下载.每天去点击下载又不太方便,所以第一次学习了一下python爬虫怎么写,写的很简单. 2. 相关技术 2.1 P ...

  3. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  4. Scrapy 爬取BOSS直聘关于Python招聘岗位

    年前的时候想看下招聘Python的岗位有多少,当时考虑目前比较流行的招聘网站就属于boss直聘,所以使用Scrapy来爬取下boss直聘的Python岗位. 1.首先我们创建一个Scrapy 工程 s ...

  5. 16-多线程爬取糗事百科(python+Tread)

    https://www.cnblogs.com/alamZ/p/7414020.html   课件内容 #_*_ coding: utf-8 _*_ ''' Created on 2018年7月17日 ...

  6. Python 爬取 "王者荣耀.英雄壁纸" 过程中的矛和盾

    1. 前言 学习爬虫,最好的方式就是自己编写爬虫程序. 爬取目标网站上的数据,理论上讲是简单的,无非就是分析页面中的资源链接.然后下载.最后保存. 但是在实施过程却会遇到一些阻碍. 很多网站为了阻止爬 ...

  7. node.js 解析xml BOM问题(xmlreader sax.js)

    Email:longsu2010 at yeah dot net 之前写了两篇文章关于node.js解析xml,说的是xmlreader,文章如下 node.js解析xml(xmlreader) no ...

  8. JAVA解析XML文件(DOM,SAX,JDOM,DOM4j附代码实现)

    1.解析XML主要有四种方式 1.DOM方式解析XML(与平台无关,JAVA提供,一次性加载XML文件内容,形成树结构,不适用于大文件) 2.SAX方式解析XML(基于事件驱动,逐条解析,适用于只处理 ...

  9. 解析xml字符串时报“前言中不允许有内容”错误。

    一,问题出现经过: j基于java语言webservic服务端接收客户端 传来的xml字符串用 解析时总报:org.dom4j.DocumentException: Error on line 1 o ...

随机推荐

  1. SQLServer 之 char、varchar、nvarchar的区别

    一.定义 1.char char是定长的,也就是当你输入的字符小于你指定的数目时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符. 例如:char(8),最多可输入4个汉字或者8个 ...

  2. Spring与Struts整合

    Spring框架是一个非常优秀的轻量级Java EE容器,Spring框架是整个轻量级Java EE框架的核心.大部分的Java EE应用,都会考虑使用Spring容器管理应用中的组件,从而保证各组件 ...

  3. 大文件读取方法(C#)

    之前都是用StreamReader.ReadLine方法逐行读取文件,自从.NET4有了File.ReadLines这一利器,就再也不用为大文件发愁了. File.ReadLines在整个文件读取到内 ...

  4. Android(java)学习笔记107-0:通过反射获得构造方法并且使用

    1.获取字节码文件对象:             Class c = Class.forName("cn.itcast_01.Person"); 2.获取构造方法         ...

  5. signed char、unsigned char

    什么是无符号char类型?与常见的char类型有何不同? 在c++中有三种不同的字符类型:char,signed char,unsigned char.如果要应用与文本字符,就使用不加限制的char类 ...

  6. [改善Java代码]慎用动态编译

    建议17: 慎用动态编译 //=========这篇博文暂时理解不透......... 动态编译一直是Java的梦想,从Java 6版本它开始支持动态编译了,可以在运行期直接编译.java文件,执行. ...

  7. centos 安装 acrobat Reader之后

    IV: 为Firefox等浏览器安装Acrobat Reader插件:sudo /usr/local/Adobe/Acrobat7.0/Browser/install_browser_plugin按照 ...

  8. Rust 学习 0

    安装Rust 后,本地有文档: file:///usr/local/share/doc/rust/html/index.html file:///usr/local/share/doc/rust/ht ...

  9. Ehcache(2.9.x) - API Developer Guide, Key Classes and Methods

    About the Key Classes Ehcache consists of a CacheManager, which manages logical data sets represente ...

  10. visual studio 2015预览版系统需求

    visual studio 2015预览版的系统需求跟visual studio 2013的一样. 支持visual studio 2015 preview的操作系统:Windows 8.1(x86 ...