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

概述

模块知识

  • BeautifulSoup的使用

HTML语言

三个重要的组成

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

代码实现

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爬虫应用 -- 采集城市景点数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部