python爬取路况信息_北京市交通管理局实时路况爬虫 | 学步园

最近无人车项目需要用到交通管理局的实时路况信息,导师要求将实时路况信息爬下来。

我的想法是,因为路况信息是实时更新的,有最新的路况他们会更新,因此需要让程序隔一段时间运行一次,检查这次爬下的内容与上一次是否一致,不一致的话存到txt文件中。因此整的步骤就是首先将网站内容爬下来,然后将需要的内容用正则表达式匹配,然后将爬下的内容和上一次爬虫的最新数据对比,将新的路况信息保存到txt文件中,最后设置间隔,每隔2分钟爬一次(因为中部信息2分钟刷新一次,观察一段时间路况信息刷新还是挺慢的,因此选2分钟,肯定不会漏)

1、查看上面网址的的结构

通过审查元素,可以看出我们需要爬的其实是一个iframe里面的内容,这样更减轻了我们处理文本的负担,直接爬src对应的网址即可

我们将src后面的网址在浏览器中输入,得到的内容:

这个内容即是我们需要的。

2、爬网址内容

关于的爬虫的文章一大堆,接下来只要一步一步做就行,下面说下主要步骤。(特别推荐一个大神的Python爬虫blog,写的确实不错,花了不少功夫,链接http://blog.csdn.net/column/details/why-bug.html)

匹配问题

从网址的源代码能看出,每一个路况的标签内容都是一样的

因此匹配直接这样写就行,在myItems中将获取到两个内容,一个是第几条,一个是第几条的详细内容

myItems=re.findall('(.*?)',myPage,re.S)

3、检查重复

这里的想法是,每次爬的时候保存最新的一条,下一次的爬虫的内容与保存的对比,将不一致的路况信息保存到txt下面

4、定时

比较简单,直接用while语句一直让它为真,在执行完一次爬虫后sleep 2分钟

问题还是挺简单的,没有分页,也没有特殊的处理。下面是全部代码

# -*- coding:utf-8 -*-

#---------------------------------------

# 程序:爬交通网站右侧实时数据

# 作者:xiaoxiao

# 日期:2014-07-19

# 语言:Python 2.7.5

#----------------------------------------

import urllib2

import urllib

import re

import time

from time import sleep

item_newest=''

def web_spider():

global item_newest

#将网址对应内容爬出

myUrl="http://sslk.bjjtgl.gov.cn/roadpublish/Map/vmsimg/vmsimage/secondrealinfo.htm?d=0.4833169437479228"

user_agent='Mozilla/4.0 (compatible; MSIE 5.5;Windows NT)'

headers={'User-Agent' : user_agent }

req=urllib2.Request(myUrl, headers = headers)

myResponse = urllib2.urlopen(req)

myPage = myResponse.read()

#将对爬下的数据进行匹配,只是抠出想要标签的内容

myItems=re.findall('(.*?)',myPage,re.S)

data=open("traffic_information_data.txt",'a');

for item in myItems:

if item[1]!=item_newest:

data.write(item[1]+'\n')

#保存最新的一条,用于检查下一次爬虫是否重复

data.close()

item_newest=myItems[0][1]

while(1):

try:

web_spider()

sleep(120)#每隔两分钟运行一次

except(KeyboardInterrupt):

print('error')

print time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))

break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值