发布时间:2026-07-25阅读(1)
对于数据分析师来说,数据获取通常有两种方式,一种是直接从系统本地获取数据,另一种是爬取网页上的数据,爬虫从网页爬取数据需要几步?总结下来,Python爬取网页数据需要发起请求、获取响应内容、解析数据、保存数据共计4步。
本文使用Python爬取去哪儿网景点评论数据共计100条数据,数据爬取后使用Tableau Public软件进行可视化分析,从数据获取,到数据清洗,最后数据可视化进行全流程数据分析,下面一起来学习。
示例工具:anconda3.7
本文讲解内容:数据获取、数据可视化
适用范围:网页数据获取及评论分析
网页数据爬取
Python爬取网页数据需要发起请求、获取响应内容、解析数据、保存数据共计4步,懂的数据爬取的原理后,进行数据爬取。
1、发起请求
以去哪儿旅行网站为例,爬取网页数据,首先发送请求。
import requestsu=https://travel.qunar.com/p-cs300100-xian-jingdian#爬取网址response=requests.get(u)print(状态码:{}.format(response.status_code))if response.status_code != 200: passelse: print("服务器连接正常")
这里返回状态码为200,说明服务器连接正常,可以进行数据爬取。
2、获取响应内容
服务器连接正常后,直接打印返回内容,这里返回整个网页html。
print(response.text)
3、解析数据
网页结构由复杂的html语言构成,这里借助BeautifulSoup库进行解析。
from bs4 import BeautifulSoupri = requests.get(url=u)soupi=BeautifulSoup(ri.text,lxml)#解析网址ul=soupi.find(ul,class_=list_item clrfix)lis = ul.find_all(li)lis
对于特定的标签进行定位,输出text。
print(soupi.h1.text)#标签定位,输出textlis=ul.find_all(li)print(lis[0].text)
建立一个字典,解析目标标签内容。
li1=lis[0]dic={}dic[景点名称]=li1.find(span,class_="cn_tit").textdic[攻略提到数量]=li1.find(div,class_="strategy_sum").textdic[评论数量]=li1.find(div,class_="comment_sum").textdic[lng]=li[data-lng]dic[lat]=li[data-lat]dic
使用for循环解析标签内容。
import requestsfrom bs4 import BeautifulSoupu1=https://travel.qunar.com/p-cs300100-xian-jingdianri=requests.get(url= u1)soupi=BeautifulSoup(ri.text,lxml)#解析网址ul=soupi.find(ul,class_=list_item clrfix)lis=ul.find_all(li)for li in lis: dic={} dic[景点名称]=li.find(span,class_="cn_tit").text dic[攻略提到数量]=li.find(div,class_="strategy_sum").text dic[评论数量]=li.find(div,class_="comment_sum").text dic[lng]=li[data-lng] dic[lat]=li[data-lat]print(dic)
根据翻页规律设置翻页数,这里设置一个列表,用来循环爬取前十页数据。
#根据翻页规律,设置翻页数urllst=[]for i in range(11): urllst.append(https://travel.qunar.com/p-cs300100-xian-jingdian str(-1-) str(i)) urllst=urllst[2:11] urllst.append(https://travel.qunar.com/p-cs300100-xian-jingdian)urllst
4、保存数据
新建一个空的数据框,用于保存数据。
import pandas as pddic = pd.DataFrame(columns=["景点名称", "攻略提到数量", "评论数量", "lng", "lat"])dic
在空的数据框中保存第一条数据,并且使用for循环,依次爬取其余页面的数据。
n=0dic.loc[n, 景点名称] = li.find(span, class_="cn_tit").textdic.loc[n, 攻略提到数量] = li.find(div, class_="strategy_sum").textdic.loc[n, 评论数量] = li.find(div, class_="comment_sum").textdic.loc[n, lng] = li[data-lng]dic.loc[n, lat] = li[data-lat]dic
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图