我是靠谱客的博主 仁爱爆米花,这篇文章主要介绍python爬虫应用 -- 采集城市景点数据,现在分享给大家,希望可以做个参考。

模块知识

  • BeautifulSoup的使用

HTML语言

三个重要的组成

  • 标签
  • 属性(标签的特性,区分标签)
  • 元素(要提取的元素)

代码实现

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import requests from bs4 import BeautifulSoup # 用于从HTML或XML文件中提取数据的Python库 ''' 1、获取分页网址列表 也就是每一页景点集合的网址 ''' url_list = [] # 列表:用于存放网址 url1 = 'https://travel.qunar.com/p-cs299878-shanghai-jingdian-1-' for i in range(5): # 将5个网页的网址放入一个列表 url_list.append(url1 + str(i+1)) #print(url_list) ''' 2、数据采集 - 测试 ''' u1 = url_list[0] # 访问网址 res = requests.get(u1) # 得到对象类型requests.models.Response # 解析网页 res.text为获取文本(HTML字符串格式),lxml为解析器类型 soup = BeautifulSoup(res.text, 'lxml') # print(soup) # 寻找属性为"list_item clrfix"的标签'ul'内容里的'li'标签的内容 lis = soup.find('ul', class_="list_item clrfix").find_all('li') # 用来存储获取到的景区数据 datalst = [] for li in lis: dic = {} # 创建空字典,用于存储数据 # 得到属性为class_="cn_tit"的标签span的内容 dic['景点名称'] = li.find('span',class_="cn_tit").text dic['评分'] = li.find('span',class_="total_star").span['style'] dic['排名'] = li.find('span',class_="ranking_sum").text dic['攻略提到数量'] = li.find('div',class_="strategy_sum").text dic['点评数量'] = li.find('div',class_="comment_sum").text dic['多少比例驴友来过'] = li.find('div',class_="txtbox clrfix").find('span',class_="comment_sum").text dic['经度'] = li['data-lng'] dic['纬度'] = li['data-lat'] datalst.append(dic) # 放入全局变量的列表中 #print(datalst) ''' 3、循环采集数据 ''' datalst = [] for ui in url_list: ri = requests.get(ui) # 访问网页 soupi = BeautifulSoup(ri.text, 'lxml') # 解析网页 lis = soupi.find('ul', class_="list_item clrfix").find_all('li') for li in lis: dic = {} # 创建空字典,用于存储数据 dic['景点名称'] = li.find('span',class_="cn_tit").text dic['评分'] = li.find('span',class_="total_star").span['style'] dic['排名'] = li.find('span',class_="ranking_sum").text dic['攻略提到数量'] = li.find('div',class_="strategy_sum").text dic['点评数量'] = li.find('div',class_="comment_sum").text dic['多少比例驴友来过'] = li.find('div',class_="txtbox clrfix").find('span',class_="comment_sum").text dic['经度'] = li['data-lng'] dic['纬度'] = li['data-lat'] datalst.append(dic) # print('成功采集',len(datalst),'条数据') # print(datalst) ''' 4、数据导出 ''' import pandas as pd # 将数据转换为DataFrame data_df = pd.DataFrame(datalst) # 数据清洗 data_df['经度'] = data_df['经度'].astype('float') data_df['纬度'] = data_df['纬度'].astype('float') data_df['点评数量'] = data_df['点评数量'].astype('int') data_df['攻略提到数量'] = data_df['攻略提到数量'].astype('int') data_df['评分'] = data_df['评分'].str.split(':').str[-1].str.replace('%','').astype('int') data_df['多少比例驴友来过'] = data_df['多少比例驴友来过'].str.split('%').str[0].astype('float')/100 data_df['排名'] = data_df[data_df['排名']!='']['排名'].str.split('第').str[-1].astype('int') # 导出excel data_df.to_excel('C:/Users/jin/Desktop/day2_result.xlsx') #print(data_df)

效果

在这里插入图片描述

最后

以上就是仁爱爆米花最近收集整理的关于python爬虫应用 -- 采集城市景点数据的全部内容,更多相关python爬虫应用内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部