python python 入门学习之网页数据爬虫搜狐汽车数据库
自己从事的是汽车行业,所以首先要做的第一个程序是抓取搜狐汽车的销量数据库(http://db.auto.sohu.com/cxdata/);
数据库提供了07年至今的汽车月销量,每个车型对应一个xml数据,比如速腾的销量:http://db.auto.sohu.com/xml/sales/model/model1004sales.xml
现在需要做的是遍历所有车型,以这个格式保存 ‘车型----日期----销量’。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib2,string,re,time
j=0
file = open('D:\Program Files\Notepad++Portable\App\Notepad++\databasesohu.txt','r').read()
f=file.split('\n')
for n in range(0,len(f)):
#开始访问
if f[n]<> "":
j=j+1
wb=urllib2.urlopen('http://db.auto.sohu.com/xml/sales/model/model'+str(f[n])+'sales.xml').read()
#获取车型名字
code=wb[wb.index('name=')+6:wb.index('">')]
model=f[n]+"---"+code
#print model #标记用的
reg='sales date=.(.*?). salesNum=.(.*?)./>'
#正则表达式
list=re.compile(reg).findall(wb)
for i in range(len(list),0,-1):
lt=list[i-1]
lt=lt[0]+"---"+lt[1]
Mdata=model+"---"+lt
print Mdata
file1 = open('D:\Program Files\Notepad++Portable\App\Notepad++\save.txt','a')
file1.write(Mdata+ '\n')
file1.close()
#时间延迟
time.sleep(0.5) else:
print 'over'
print j
file = open('D:\Program Files\Notepad++Portable\App\Notepad++\databasesohu.txt','r').read()
f=file.split('\n')
打开车型代码大全,并用换行符分割
wb=urllib2.urlopen('http://db.auto.sohu.com/xml/sales/model/model'+str(f[n])+'sales.xml').read()
然后开始遍历车型,用URLlib2进行访问,获取汽车名称model。
用正则表达式获取日期及销量(此处也可以用xml处理来获得)。
将数据保存至text文档。
新手需要注意的问题是 python中文件的读取的方法,此处用的open(,'a'),就是add的意思。
参考:http://www.cnblogs.com/allenblogs/archive/2010/09/13/1824842.html
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738281887b88350bd21544e6095d55eaf54cac23f000
python python 入门学习之网页数据爬虫搜狐汽车数据库的更多相关文章
- python python 入门学习之网页数据爬虫cnbeta文章保存
需求驱动学习的动力. 因为我们单位上不了外网所以读新闻是那么的痛苦,试着自己抓取网页保存下来,然后离线阅读.今天抓取的是cnbeta科技新闻,抓取地址是http://m.cnbeta.com/wap/ ...
- 第15.25节 PyQt(Python+Qt)入门学习:Model/View开发实战--使用QTableView展示Excel文件内容
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在前面的订阅专栏<第十九章.Model/View开发:QTableView的功能及属 ...
- python 入门实践之网页数据抓取
这个不错.正好入门学习使用. 1.其中用到 feedparser: 技巧:使用 Universal Feed Parser 驾驭 RSS http://www.ibm.com/developerwor ...
- 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...
- 第15.18节 PyQt(Python+Qt)入门学习:Model/View架构中视图Item Views父类详解
老猿Python博文目录 老猿Python博客地址 一.概述 在PyQt图形界面中,支持采用Model/View架构实现数据和界面逻辑分离,其中Model用于处理数据存储,View用于界面数据展现,当 ...
- 【python】入门学习(十)
#入门学习系列的内容均是在学习<Python编程入门(第3版)>时的学习笔记 统计一个文本文档的信息,并输出出现频率最高的10个单词 #text.py #保留的字符 keep = {'a' ...
- 第15.41节、PyQt(Python+Qt)入门学习:输入部件QComboBox组合框功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 Designer中输入工具部件中的Combo Box组合框与 ...
- 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...
- 第15.36节 PyQt(Python+Qt)入门学习:containers容器类部件QFrame框架部件介绍
一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有如下: 容器中的Frame为一个矩形的框架对象,对应类QFrame,QFrame类是PyQt中带框架 ...
随机推荐
- 从入门到精通C++需要学的10本书
学习C++从入门到精通的的十本最经典书籍 文章来源中国IT实验室收集整理作者佚名更新时间2009-5-16 12:27:05 保存本文保存本文推荐给好友推荐给好友收藏本页收藏本页 欢迎进入C/C++ ...
- 在线c++编译器(gcc)
这几年c++标准委员会活跃起来,C++11.14标准相续推出.对于想尝鲜又怕麻烦(visual studio 更新慢,对标准的支持力度也不够.对于使用gcc的,替换系统的gcc版本或者安装个mingw ...
- React知识点总结1
最近打算把react知识点总结下: React特点 1.虚拟DOM 在内存中操作DOM,在内存中创建数据结构,只会更新有差异的地方 2.组件化 页面分成若干个组件,每个组件包含逻辑结构和样式 组件仅包 ...
- c#-基础:类的进阶
类的概述: 类是一个能存储数据并执行代码的数据结构 数据成员:通常模拟该类所表示显示世界的事物特性 函数成员:执行代码.模拟显示世界事物的功能和操作 数据成员:字段,常量 函数成员执行代码:方法 运算 ...
- CountDownLatch如何使用
正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行.在Java并发中,countdownlatch的概念是一 ...
- Win8.1无法安装.NET Framework 3.5的解决办法
这个问题纠结了我很多天,恢复系统也没用,差点儿就重装Win8,现在终于解决了,你也来试试吧! 机型:台电X89 系统:Win8.1 with bing 故障:在未安装.NET Framework 3. ...
- python模块学习心得
初始模块 1.什么是模块 模块是用来实现某项功能的一大堆代码,为什么会有模块呢?过程式编程的时候为了减少程序员编程代码的重复性,就利用函数的调用减少了代码的重复性,但是某些时候程序会过于的庞大,我们会 ...
- 【原】jQuery与CSS自动生成验证码
模板: <button class="r receive_code">获取验证码</button> <span class="r code& ...
- jQuery:提交表单前判断表单是否被修改过
表单加载完成后执行 : //表单中包含input(text,checkbox,hidden),select,radio, $("#editWithdrawAutoApprovedConf ...
- Java Classloader详解
一.Java中的class加载机制有以下三个特性: 1.全盘负责制 “全盘负责”是指当一个ClassLoader装载一个类时,除非显示地使用另一个ClassLoader,则该类所依赖及引用的类也由这 ...