Python如何爬取北京市所有电子眼名

技术Python如何爬取北京市所有电子眼名Python如何爬取北京市所有电子眼名,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言今天给大家分享一篇非常

如何用Python抓取北京所有电子眼名称?针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想要解决这个问题的小伙伴找到更简单易行的方法。

今天给大家分享一篇很实用的文章,用树叶做一张北京交通电子眼分布图,再也不怕被隐蔽摄像头拍到了。

结果如下:

Python如何爬取北京市所有电子眼名

这个网站可以获取全国各地区的电子眼数据。

以北京为例,我们用python对北京所有的电子眼名称进行抓取。代码如下:

URL 1=' https://www . icauto.com.cn/张伟/wzd/110000/list_1.html '

response=requests.get(url1,headers=header)

soup=美化组(response.text,' html.parser ')

results=soup.find('div ',class _=' cdz-c content ')。查找全部(' li ')

forresultinresults:

时间.睡眠(0.5)

name=result.find('a ')。文本

索引=结果。查找(' span ')。文字。split (':') [1]经过包捕获分析,可以得到根据电子眼名称获取经纬度信息的界面:

https://api.map.baidu.com/?Qt=gcwd=北京西路中坝隧道段cn=北京IE=utf-8 oue=1 from product=jsapires=apiak=S8 ss5 dbz 7 blri 3 BCVRAAYMANQXOYEO返回结果如下:

Python如何爬取北京市所有电子眼名

大家主要看的是coord参数,但是乍一看确实有点混乱。我不知道这是什么。查了很久才知道这是百度地图使用的墨卡托平面坐标,使用百度地图api可以转换成经纬度。转换代码如下:

URL 3=' http://API . map . Baidu.com/geoconv/v1/?Coords={}from=6to=5ak=用你的ak替换。格式(str (coord ['x'])',' str (coord ['y']))。

response=requests.get(url3,headers=header)

result=JSON . loads(response . text)[' result '][0]

lon=结果['x']

Lat=结果['y']最后,将结果保存到csv表:

withopen('dianziyan.csv ',' a ',newline=' ',encoding='gb18030')asf:

f_csv=csv.writer(f)

Python如何爬取北京市所有电子眼名

2.用folium标点

叶图的标点方法之前已经介绍过,请参考:

用python生成广州停车场分布图。

代码如下:

importpandasaspd

data=PD . read _ CSV(' Dian ziyan . CSV ',编码='gbk ')

进口叶

fromfoliumimportplugins

camera _ map=leaf . map(位置=[数据['纬度'])。平均值(),数据['经度']。mean()],zoom_start=1。

0,control_scale=True,)
incidents = folium.map.FeatureGroup()
for name,row in data.iterrows():
    incidents.add_child(
        folium.CircleMarker(            #CircleMarker表示花圆
            [row["纬度"], row["经度"]],   #每个停车场的坐标
            radius=7,                   #圆圈半径
            color='yellow',             #标志的外圈颜色
            fill=True,                  #是否填充
            fill_color='red',           #填充颜色
            fill_opacity=0.4,            #填充透明度
            
        )
    )
Camera_map.add_child(incidents)
Camera_map.save('Camera_map1.html')

Python如何爬取北京市所有电子眼名

经过放大后可以发现,坐标定位不是很准,有的严重偏离路线,有的甚至定位到湖里了,这是因为底图坐标和电子眼经纬度标准不统一

为了定位更准确,我们把底图和电子眼经纬度统一规范为高德地图

百度经纬度转换成高德经纬度的函数如下:

import math
def bdToGaoDe(lat,lon):
    """
    百度经纬度转高德经纬度
    :param lon:
    :param lat:
    :return:
    """
    PI = 3.14159265358979324 * 3000.0 / 180.0
    x = lon - 0.0065
    y = lat - 0.006
    z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * PI)
    theta = math.atan2(y, x) - 0.000003 * math.cos(x * PI)
    lon = z * math.cos(theta)
    lat = z * math.sin(theta)
    return lat,lon

读取数据,进行转换:

import pandas as pd
data=pd.read_csv('dianziyan.csv',encoding='gbk')
for name,row in data.iterrows():
    print(bdToGaoDe(row["纬度"],row["经度"]))

将底图换成高德地图,然后将标点转换成电子眼图标:

import folium
from folium import plugins
Camera_map = folium.Map(location=[data['纬度'].mean(), data['经度'].mean()], zoom_start=10,zoom_control='False',
                     tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',attr='AutoNavi')
incidents = folium.map.FeatureGroup()
tooltip ='请点击我查看该点信息'
for name,row in data.iterrows():
    incidents.add_child(
        folium.Marker(            #CircleMarker表示花圆
            [bdToGaoDe(row["纬度"],row["经度"])[0],bdToGaoDe(row["纬度"],row["经度"])[1]],   #每个停车场的坐标
            icon=folium.Icon(color='green', prefix='fa', icon='bullseye')
        )
    )
Camera_map.add_child(incidents)
Camera_map.save('Camera_map2.html')

Python如何爬取北京市所有电子眼名

通过tiles可以设置不同的地图瓦片在,这里设置为高德地图瓦片

Folium.Icon类可以设置color, icon_color, icon, angle, prefix这5个参数:

color的可选项包括:[‘red’, ‘blue’, ‘green’, ‘purple’, ‘orange’, ‘darkred’, ‘lightred’, ‘beige’, ‘darkblue’, ‘darkgreen’, ‘cadetblue’, ‘darkpurple’, ‘white’, ‘pink’, ‘lightblue’, ‘lightgreen’, ‘gray’, ‘black’, ‘lightgray’] ,或者HTML颜色代码
icon_color同上
icon可以在Font-Awesome网站中找到对应的名字,并设置prefix参数为’fa’
angle以度为单位设置

只显示了北京地区的电子眼位置,感兴趣的朋友可以深入研究一下,做一张全国的交通电子眼分布图。

关于Python如何爬取北京市所有电子眼名问题的解答就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/49014.html

(0)

相关推荐

  • FastDFS搭建

    技术FastDFS搭建 FastDFS搭建拉取镜像docker pull morunchang/fastdfs运行tracker
    docker run -d --name tracker --net=h

    礼包 2021年12月6日
  • 基于JAVA springboot+VUE前后端分离疫情防疫平台设计实现

    技术基于JAVA springboot+VUE前后端分离疫情防疫平台设计实现 基于JAVA springboot+VUE前后端分离疫情防疫平台设计实现基于JAVA springboot+VUE前后端分离

    礼包 2021年10月27日
  • iphone手机壁纸,苹果手机壁纸在哪里可以找到

    技术iphone手机壁纸,苹果手机壁纸在哪里可以找到1、解锁iPhoneiphone手机壁纸,然后找到设置,点击设置、墙纸。2、点击选取新的墙纸,能看到所有系统的壁纸。一、手机壁纸通常也被称之为手机图片,待机图片,就跟W

    生活 2021年10月28日
  • VB.NET如何实现数据转换

    技术VB.NET如何实现数据转换这篇文章给大家分享的是有关VB.NET如何实现数据转换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。VB.NET数据转换的方法有很多种,要想熟练的掌握好这些实用

    攻略 2021年12月2日
  • 几何平均,什么是算术平均值和几何平均值

    技术几何平均,什么是算术平均值和几何平均值算术平均数(Arithmetic mean)是表征数据集中趋势的一个统计指标。 它是一组数据之和,除以这组数据之个/项数。算术平均数在统计学上的优点,就是它较中位数、众数更少受到

    生活 2021年10月20日
  • NHibernate是什么

    技术NHibernate是什么本篇内容介绍了“NHibernate是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!N

    攻略 2021年12月4日