Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
本文将介绍如何使用Python爬虫爬取去哪儿网站上的旅游景点攻略,并使用可视化工具对数据进行分析和展示。本文将分为以下几个部分:
- 爬取去哪儿网站上的旅游景点攻略数据
- 数据清洗和处理
- 使用可视化工具对数据进行分析和展示
爬取去哪儿网站上的旅游景点攻略数据
首先,我们需要使用Python爬虫爬取去哪儿网站上的旅游景点攻略数据。我们可以使用requests库和BeautifulSoup库来实现。以下是示例代码:
import requests
from bs4 import BeautifulSoup
url = 'https://travel.qunar.com/p-cs299878-shanghai-jingdian'
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.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.find_all('li', class_='list_item')
for item in items:
title = item.find('span', class_='cn_tit').text.strip()
desc = item.find('span', class_='cn_desc').text.strip()
print(title, desc)
在这个示例中,我们首先定义了要爬取的网页URL和请求头部信息。然后,我们使用requests库发送GET请求,并使用BeautifulSoup库解析HTML文档。接着,我们使用find_all()函数查找所有的攻略列表项,并使用find()函数查找攻略标题和描述。最后,我们将标题和描述打印出来。
数据清洗和处理
在爬取到数据后,我们需要对数据进行清洗和处理,以便后续的分析和展示。以下是示例代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://travel.qunar.com/p-cs299878-shanghai-jingdian'
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.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
items = soup.find_all('li', class_='list_item')
data = []
for item in items:
title = item.find('span', class_='cn_tit').text.strip()
desc = item.find('span', class_='cn_desc').text.strip()
data.append([title, desc])
df = pd.DataFrame(data, columns=['title', 'desc'])
df.to_csv('qunar_travel.csv', index=False, encoding='utf-8-sig')
在这个示例中,我们首先定义了要爬取的网页URL和请求头部信息。然后,我们使用requests库发送GET请求,并使用BeautifulSoup库解析HTML文档。接着,我们使用find_all()函数查找所有的攻略列表项,并使用find()函数查找攻略标题和描述。最后,我们将标题和描述存储到一个列表中,并使用pandas库将列表转换为DataFrame对象,并将其保存为CSV文件。
使用可视化工具对数据进行分析和展示
在清洗和处理数据后,我们可以使用可视化工具对数据进行分析和展示。以下是示例代码:
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
df = pd.read_csv('qunar_travel.csv')
df['title_len'] = df['title'].apply(len)
df['desc_len'] = df['desc'].apply(len)
df['title_len'].plot(kind='hist', bins=20)
plt.title('Histogram of Title Length')
plt.xlabel('Title Length')
plt.ylabel('Frequency')
plt.show()
text = ' '.join(df['desc'].tolist())
wordcloud = WordCloud(background_color='white', width=800, height=600).generate(text)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
在这个示例中,我们首先使用pandas库读取CSV文件,并添加两列新的数据:标题长度和描述长度。接着,我们使用matplotlib库绘制标题长度的直方图,并使用wordcloud库生成描述的词云图。
示例说明
以下是两个示例说明,用于演示Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析的完整攻略:
示例1:绘制标题长度的直方图
假设我们需要绘制标题长度的直方图。我们可以使用matplotlib库绘制直方图,并使用pandas库读取CSV文件。以下是示例代码:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('qunar_travel.csv')
df['title_len'] = df['title'].apply(len)
df['title_len'].plot(kind='hist', bins=20)
plt.title('Histogram of Title Length')
plt.xlabel('Title Length')
plt.ylabel('Frequency')
plt.show()
在这个示例中,我们首先使用pandas库读取CSV文件,并添加一列新的数据:标题长度。然后,我们使用plot()函数绘制标题长度的直方图,并使用title()函数设置图表标题,xlabel()函数设置x轴标签,ylabel()函数设置y轴标签。最后,我们使用show()函数显示图表。
示例2:生成描述的词云图
假设我们需要生成描述的词云图。我们可以使用wordcloud库生成词云图,并使用pandas库读取CSV文件。以下是示例代码:
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
df = pd.read_csv('qunar_travel.csv')
text = ' '.join(df['desc'].tolist())
wordcloud = WordCloud(background_color='white', width=800, height=600).generate(text)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
在这个示例中,我们首先使用pandas库读取CSV文件,并将所有的描述合并为一个字符串。然后,我们使用WordCloud()函数生成词云图,并使用imshow()函数显示图像,使用axis()函数隐藏坐标轴。最后,我们使用show()函数显示图表。
结语
在本文中,我们介绍了如何使用Python爬虫爬取去哪儿网站上的旅游景点攻略,并使用可视化工具对数据进行分析和展示。在实际应用中,我们可以根据具体的需求编写爬虫和可视化代码,以实现各种数据处理和分析功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析 - Python技术站