首先,先介绍一下爬取公交站点时代码中引入的库。
- requests:使用HTTP协议向网页发送请求并获得响应的库。
- BeautifulSoup:用于解析HTML和XML网页文档的库,简化了页面解析和信息提取的过程。
- json:用于处理JSON格式数据的库。
- xlwt:用于将数据写入Excel文件中的库。
- Coordin_transformlat:自定义的一个坐标转换库。在这个爬虫项目中,它被用来将高德地图提供的火星坐标系转换成WGS-84坐标系,即调用gcj02towgs84函数来实现这一功能。
import requests
from bs4 import BeautifulSoup
import json
import xlwt
from Coordin_transformlat import gcj02towgs84
那么接下来的公共交通站点数据的爬取主要分为两个部分,第一部分从8684网站中爬取公共交通站点的名称,第二部分利用高德开放平台的地理编码功能查询对应公共交通站点的经纬度。
1. 8684网站爬取公共交通站点名称
我在这里以武汉市为例,以下是在8684网站查询武汉市公共交通的页面。
我们可以看到这个网页的网址是“https://wuhan.8684.cn/”,这个就是我们在代码中填入的需要爬取的网址。然后我们看下方,在这里公交线路可以按照三种方式来进行查询,分别是“以数字开头”、“以汉字/字母开头”、“线路分类”,因为我需要爬取的公共交通站点能够按地铁、公交等进行区分,所以主要使用按“线路分类”来进行爬取,但是部分城市的线路分类下的公交线路是没有的,所以只能按照数字+字母的方式来爬取。
下面的这部分代码主要是获取了线路分类下的多个子类的网页。
url = 'https://wuhan.8684.cn/' #此处需要修改,共7处
response = requests.get(url=url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'})
print(response. status_code)
#获取数据并解析
soup = BeautifulSoup(response.text, 'lxml')
soup_buslayer = soup.find('div'