1.爬取北京的航班
1.1获取网页
link ='http://flights.ctrip.com/schedule/bjs..html'
r = requests.get(link, headers=headers, timeout=10)
print('页面响应码状态:', r.status_code)
1.2 解析页面
soup = BeautifulSoup(r.text, 'lxml')
line_titles = soup.find_all('div', class_='m')
1.3处理数据
处理前:
爬到的数据是这样的:
北京-阿拉善左旗
北京-阿尔山
北京-阿克苏北京-安顺
北京-鞍山
pattern=re.compile(r'[\u4e00-\u9fa5]+')#匹配汉字方式
m=pattern.findall(line_titles)
提取里面的汉字信息:
['北京', '阿拉善左旗', '北京', '阿尔山', '北京', '阿克苏', '北京', '安顺', '北京', '鞍山', '北京', '包头', '北京', '白城', '北京', '毕节', '北京', '保山', '北京', '巴彦淖尔', '北京', '白山', '北京', '百色', '北京', '成都', '北京', '长春', '北京', '朝阳', '北京', '长沙', '北京', '重庆', '北京', '赤峰', '北京', '长治', '北京', '常州', '北京', '常德', '北京', '大庆', '北京', '大理市', '北京', '大连', '北京', '达州', '北京', '东营', '北京', '大同', '北京', '鄂尔多斯', '北京', '恩施', '北京', '二连浩特', '北京', '福州', '北京', '抚远', '北京', '阜阳', '北京', '贵阳', '北京', '桂林', '北京', '广州', '北京', '赣州', '北京', '广元', '北京', '固原', '北京', '海拉尔', '北京', '杭州', '北京', '海口', '北京', '淮安', '北京', '哈尔滨', '北京', '黑河', '北京', '和田市', '北京', '河池', '北京', '哈密市', '北京', '衡阳', '北京', '霍林郭勒', '北京', '呼和浩特', '北京', '汉中', '北京', '合肥', '北京', '惠州', '北京', '建三江', '北京', '加格达奇', '北京', '嘉峪关', '北京', '揭阳', '北京', '鸡西', '北京', '佳木斯', '北京', '景德镇', '北京', '济宁', '北京', '济南', '北京', '库尔勒', '北京', '昆明']
切分数据(两个一组,一个是出发点,一个是目的地):
film_type = m
film_type_new = []
for i in range(0, len(film_type), 2):
film_type_new.append(film_type[i:i + 2])
for i in film_type_new:
print(i)
切分之后是:
['北京', '阿拉善左旗']
['北京', '阿尔山']
['北京', '阿克苏']
['北京', '安顺']
['北京', '鞍山']
['北京', '包头']
['北京', '白城']
['北京', '毕节']
['北京', '保山']
['北京', '巴彦淖尔']
['北京', '白山']
['北京', '百色']
['北京', '成都']
['北京', '长春']
['北京', '朝阳']
['北京', '长沙']
['北京', '重庆']
2.利用Geoline制图
from pyecharts import GeoLines,Style
style = Style(
title_top = "#fff",
title_pos = "left",
width = 1000,
height = 800,
background_color = "#404a59"
)
data = [['北京', '阿拉善左旗'],
['北京', '阿克苏'],
['北京', '安顺'],
['北京', '鞍山'],
['北京', '包头'],
['北京', '白城'],
['北京', '毕节'],
['北京', '保山'],
['北京', '巴彦淖尔'],
['北京', '白山'],
['北京', '百色'],
['北京', '成都'],
['北京', '长春'],
['北京', '朝阳'],
['北京', '长沙'],
['北京', '重庆'],
['北京', '赤峰'],
['北京', '长治'],
['北京', '常州'],
['北京', '常德'],
['北京', '大庆'],
['北京', '大理市'],
['北京', '大连'],
['北京', '东营'],
['北京', '大同'],
['北京', '鄂尔多斯'],
['北京', '恩施'],
['北京', '二连浩特'],
['北京', '福州'],
['北京', '阜阳'],
['北京', '贵阳'],
['北京', '桂林'],
['北京', '广州'],
['北京', '赣州'],
['北京', '广元'],
['北京', '海拉尔'],
['北京', '杭州'],
['北京', '海口'],
['北京', '淮安'],
['北京', '哈尔滨'],
['北京', '黑河'],
['北京', '和田市'],
['北京', '河池'],
['北京', '哈密市'],
['北京', '衡阳'],
['北京', '霍林郭勒'],
['北京', '呼和浩特'],
['北京', '汉中'],
['北京', '合肥'],
['北京', '惠州'],
['北京', '嘉峪关'],
['北京', '揭阳'],
['北京', '鸡西'],
['北京', '佳木斯'],
['北京', '景德镇'],
['北京', '济宁'],
['北京', '济南'],
['北京', '库尔勒'],
['北京', '昆明'],
['北京', '喀什市'],
['北京', '克拉玛依'],
['北京', '兰州'],
['北京', '吕梁'],
['北京', '拉萨'],
['北京', '临汾'],
['北京', '洛阳'],
['北京', '六盘水'],
['北京', '临沂'],
['北京', '陇南'],
['北京', '连云港'],
['北京', '龙岩'],
['北京', '梅州'],
['北京', '满洲里'],
['北京', '绵阳'],
['北京', '宁波'],
['北京', '南昌'],
['北京', '南宁'],
['北京', '南阳'],
['北京', '南京'],
['北京', '南充'],
['北京', '南通'],
['北京', '攀枝花'],
['北京', '泉州'],
['北京', '青岛'],
['北京', '衢州'],
['北京', '齐齐哈尔'],
['北京', '日照'],
['北京', '松原'],
['北京', '深圳'],
['北京', '三亚'],
['北京', '上海'],
['北京', '十堰'],
['北京', '石河子'],
['北京', '邵阳'],
['北京', '沈阳'],
['北京', '上饶'],
['北京', '太原'],
['北京', '通辽'],
['北京', '天水'],
['北京', '通化'],
['北京', '吐鲁番'],
['北京', '铜仁'],
['北京', '天津'],
['北京', '武夷山'],
['北京', '乌海'],
['北京', '乌兰浩特'],
['北京', '乌鲁木齐'],
['北京', '武汉'],
['北京', '温州'],
['北京', '无锡'],
['北京', '威海'],
['北京', '西昌'],
['北京', '西宁'],
['北京', '襄阳'],
['北京', '厦门'],
['北京', '西安'],
['北京', '兴义'],
['北京', '锡林浩特'],
['北京', '银川'],
['北京', '宜春'],
['北京', '义乌'],
['北京', '宜昌'],
['北京', '扬州']
]
style_geo = style.add(
is_label_show=True,#标签的有无
line_curve=0.2,#曲线的弯曲度
line_opacity=0.5,#航线的透明度
legend_text_color="#eee",
legend_pos="right",#示例的位置
geo_effect_symbol="plane",
geo_effect_symbolsize=10,#飞机大小
label_color=['#ffa022', '#ffa022', '#46bee9'],
label_pos="right",
label_formatter="{b}",#地方标签的格式
label_text_color="#eee",
)
geolines = GeoLines("GeoLines 示例", **style.init_style)#相当于设置背景
geolines.add("从北京出发", data,
tooltip_formatter="{a} : {c}",**style_geo#设置航线的一些东西
)
geolines.render()
3.效果