2015年共享经济像雨后春笋般崛起,风口之下,市场上涌现出共享单车、共享充电宝、共享雨伞、共享健身房、共享玩具、共享服装等一系列共享经济产物。但是经过此后几年行业洗牌重塑,共享单车保留了下来。 当然,共享单车的玩家发生了彻底洗牌。2016年有20余家企业混战,到如今市场呈现美团单车、哈啰单车、滴滴青桔“三巨头”竞争状态,三家企业占据了95%的市场。不过按照互联网的生存法则,随着行业进入成熟稳定期,企业便不再烧钱补贴用户,而是开始向用户侧“收割”。 近一两年,“共享单车又双叒叕涨价了”的话题不时在网上引发讨论。根据一些新闻提供的数据,目前部分城市的共享单车价格已经涨至1小时6.5元。面对越来越贵的共享服务,消费者还会买单吗?面对共享单车各种悄然涨价,大家都持什么样的态度呢? 接下来我们通过专业的爬虫技术来讲解下“怎么用Python爬取微博上关于共享单车涨价的评论数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习。 在爬取之前我们需要先解析网站,像微博这样的网站反爬虫技术肯定做的很严,这里我们最重要的就是做好网站封IP。需要通过添加优质代理IP来应对。简单的爬取实现过程如下:
import requests
import json
# 定义一个爬虫加强版代理IP
proxyUser = "16yun"
proxyPass = "16ip"
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxyPort,
"user" : proxyUser,
"pass" : proxyPass,
}
# 设置 http和https访问都是用HTTP代理
proxies = {
"http" : proxyMeta,
"https" : proxyMeta,
}
# 定义一个微博评论的URL,可以从微博APP或网页版获取
video_url = "https://weibo.com/newlogin?tabtype=search&gid=&openLoginLaye"
# 定义一个请求头,模拟浏览器访问
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
}
# 定义一个函数,用于随机选择一个代理IP并发送请求
def get_response(url, proxies, headers):
# 随机选择一个代理IP
proxy = random.choice(proxies)
# 使用requests库发送GET请求,并设置超时时间为10秒
response = requests.get(url, proxies, headers=headers, timeout=10)
# 返回响应对象
return response
# 定义一个函数,用于解析响应内容并提取评论数据
def get_comments(response):
# 判断响应状态码是否为200,即成功访问
if response.status_code == 200:
# 使用json库解析响应内容为字典格式
data = json.loads(response.text)
# 获取评论列表,每个评论是一个字典,包含评论者昵称、头像、内容等信息
comments = data["data"]["comments"]
# 返回评论列表
return comments
else:
# 如果响应状态码不为200,打印错误信息并返回空列表
print(f"Error: {response.status_code}")
return []
# 调用get_response函数,发送请求并获取响应对象
response = get_response(video_url, proxies, headers)
# 调用get_comments函数,解析响应内容并获取评论列表
comments = get_comments(response)
# 打印评论列表的长度和前十条评论的内容(如果有的话)
print(f"Number of comments: {len(comments)}")
print("Top 10 comments:")
for comment in comments[:10]:
print(comment["content"])