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
时间: 2024-10-24 19:10:18

python python 入门学习之网页数据爬虫搜狐汽车数据库的相关文章

python python 入门学习之网页数据爬虫cnbeta文章保存

需求驱动学习的动力. 因为我们单位上不了外网所以读新闻是那么的痛苦,试着自己抓取网页保存下来,然后离线阅读.今天抓取的是cnbeta科技新闻,抓取地址是http://m.cnbeta.com/wap/index.htm?page=1,咱们需要抓取的是前5页就行了.代码如下: #!/usr/bin/python # -*- coding: utf-8 -*- import urllib2,re,time,json import sys from bs4 import BeautifulSoup r

Python Selenium入门学习材料整理

Python Selenium入门学习材料整理一.简介及环境搭建1.selenium 介绍:selenium 是一个 web 的自动化测试工具,可以自动打开浏览器执行页面打开.页面内容抓取.页面元素搜索,是相对好上手的网页爬取工具.2.安装selenium:pip install selenium3.安装webdriver:selenium打开网页需要有webdriver来调用浏览器.Firefox:https://github.com/mozilla/geckodriver/releases/

python 入门实践之网页数据抓取

这个不错.正好入门学习使用. 1.其中用到 feedparser: 技巧:使用 Universal Feed Parser 驾驭 RSS http://www.ibm.com/developerworks/cn/xml/x-tipufp.html 请访问 feedparser.org,详细了解 Universal Feed Parser,其中还包括一些下载资料和文档. feedparser 实际下载地址: http://code.google.com/p/feedparser/downloads

Python自学入门学习基础之一: 列表和元组

本人从事Python多年,有好多小伙伴加了我之后说:有没有相对来说简单点的教程,你写的一些大项目我们小编看不懂!!今天我就发一篇小白入门学习之一的基础,列表和元祖,欢迎大家订阅公众号:Python从程序猿到程序猿,或者加 ,山君:49130.8659,编码:柯西 ...编码:柯西,,我会分享爬虫或者web从0基础到项目实战的一系列的视频资料,保证可以让你自学成才. 列表 首先,列表属于序列,那么序列类型可用如下内建函数-- list(iter):把可迭代对象转换为列表. str(obj):把ob

Python编程入门学习:最常见加密方式和Python实现

前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. 将字符串和Bytes互相转换可以使用encode()和decode()方法.如下所示: # 方法中不传参数则是以默认的utf-8编码进行转换In [1]: '南北'.encode()Out[1]: b'\xe5\x8d\x97\xe5\x8c\x97'In [2]: b'\xe5\x8d\x97\xe

python 实现汽车之家车型数据爬虫

爬虫保存数据库的样子: 详细数据在json_text字段里面 安装使用方法: git clone https://github.com/shancang/spider.git  pip install -r requirements.txt mysql spider< sql/createTable.sql 修改配置 spider/config.py # -*- coding: utf-8 #日志---------------------------------------- #日志目录 LOG

【python】入门学习(十)

#入门学习系列的内容均是在学习<Python编程入门(第3版)>时的学习笔记 统计一个文本文档的信息,并输出出现频率最高的10个单词 #text.py #保留的字符 keep = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p' 'q','r','s','t','u','v','w','x','y','z',' ','-',"'"} #将文本规范化 def normalize(s): "

Python一些入门学习

最近在尝试用Pyhton写c4d插件,虽然说也有C++的api,不过py生产力明显更高一些 Python语法入门 1.hellow world: 2.变量创建,变量在字符串中的连接方式是逗号,而不是加号 3.for循环 4.while循环,似乎没有i++这种语法,只能i=i+1 注:无限while循环用"while 1".另外python里没有switch语句

python数据分析入门学习笔记儿

学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据分析相关python库的介绍(前言1~4摘抄自<利用python进行数据分析>) 1.Numpy: Numpy是python科学计算的基础包,它提供以下功能(不限于此): (1)快速高效的多维数组对象naarray (2)用于对数组执行元素级计算以及直接对数组执行数学运算的函数 (3)用于读写硬盘