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)

相关推荐

  • 怎么使用配置文件安装SQLServer故障转移群集

    技术怎么使用配置文件安装SQLServer故障转移群集这篇文章将为大家详细讲解有关怎么使用配置文件安装SQLServer故障转移群集,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  S

    攻略 2021年12月8日
  • C++声明局部变量类型时为什么概念比auto更好

    技术C++声明局部变量类型时为什么概念比auto更好本篇内容主要讲解“C++声明局部变量类型时为什么概念比auto更好”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++声明

    攻略 2021年11月24日
  • 淘宝盖楼活动怎么做,手机淘宝店铺怎么创建活动页面

    技术淘宝盖楼活动怎么做,手机淘宝店铺怎么创建活动页面手机淘宝店铺创建活动页面步骤如下:在手机登陆到淘宝然后依次点击“卖家中心”-“店铺管理”-“手机淘宝店铺”然后在店铺设置下面点面点击“无线活动管理”;在进入的页面下点击

    生活 2021年10月25日
  • 怎么用javascript实现单选表单

    技术怎么用javascript实现单选表单这篇文章主要介绍“怎么用javascript实现单选表单”,在日常操作中,相信很多人在怎么用javascript实现单选表单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月18日
  • 浏览器内核分哪几类

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

    攻略 2021年11月12日
  • 如何使用Jmeter进行http接口测试

    技术如何使用Jmeter进行http接口测试这篇文章给大家介绍如何使用Jmeter进行http接口测试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言:  主要针对http接口进行测试,使用Jme

    攻略 2021年11月29日