社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

接到霍格沃茨招生办的电话,打败魔法的大概只有Python了

Crossin的编程教室 • 5 年前 • 577 次点击  



大家好,欢迎来到 Crossin的编程教室 !


9月正值开学季,同学们已经开始陆续去自己的学校报道了。


同样,霍格沃茨今年也迎来了开学季,那同学们有人收到霍格沃茨入学电话吗?



这是什么情况?


让我们一起看看微博上网友们是怎么描述自己收到的电话的~


01

数据采集


我们是从微博移动端来进行数据采集的。我们按F12,打开开发者模式,对网页进行观察



我们发现数据存储的网页是一个hotflow开头的页面,它的数据存储的方式是Ajax,那我们就可以知道请求的页面和提取数据的方式了。


在上面,我们已经找到数据存储的网页和方式,那么只需要找到页面之间的联系,构造好循环,就可以批量开始爬取啦~


接下来对不同页面之间的URL进行观察



它们URL里面的id和mid是固定不变的,但是max_id是变化的,然后我又在页面里面发现了max_id值的规律,每一页的max_id的值都在上一页中存储着。




抓取可以使用 requests 库来实现。不熟悉的同学,可以参考我们之前的文章:

requests库,让你的爬虫开发效率提升8倍

chrome开发者工具,掌握它就解决了一半的爬虫问题


数据采集的核心代码:


import requests
import re
import time
import csv
for page in range(1,10000):
if page == 1 :
params = (
('id', '4679186482727431'),
('mid', '4679186482727431'),
('max_id_type', '0'),
)

response = requests.get('https://m.weibo.cn/comments/hotflow', headers=headers, params=params)

a = response.json()['data']['max_id']
b = response.json()['data']['max_id_type']

for i in response.json()['data']['data']:
pinglunshijian = i['created_at']
ri = pinglunshijian.split()[2]
shi = pinglunshijian.split()[3].split(':')[0]

dianzanshu = i['like_count']
neirong = re.sub(r']*>', '', i['text'])
id = i['user']['id']
yonghumingcheng = i['user']['screen_name']

with open('霍格沃茨.csv','a',newline='') as f:
writer = csv.writer(f)
writer.writerow([yonghumingcheng,dianzanshu,ri,shi])

with open(r'霍格沃茨.txt', 'a', encoding='utf-8') as f:
f.write(f'{neirong}\n')



02

词云图展示


我们此次一共获取了3016条数据,对这些数据进行词云图绘制:



我们发现,很多骚扰、诈骗一词很多,看来大家都不太相信魔法同时防骗意识也很强~


麻瓜、苦涩、为什么、拦截一词也很多,看来网友们遇到的情况各种各样呀,那么你接到电话了吗?内容是什么呀?


词云图代码:


with open("霍格沃茨.txt",encoding='utf-8') as f:
job_title_1 = f.read()
contents_cut_job_title = jieba.cut(job_title_1)
contents_list_job_title = " ".join(contents_cut_job_title)
wc = WordCloud(stopwords=STOPWORDS.add("一个"), collocations=False,
background_color="white",
font_path=r"K:\苏新诗柳楷简.ttf",
width=400, height=300, random_state=42,
mask=imread('xin.jpg', pilmode="RGB")
)
wc.generate(contents_list_job_title)
wc.to_file("推荐语.png")


03

小结


1. 这其实是某手游的宣传活动,两年前预约游戏的人就可以收到这个电话啦,不是真的有霍格沃茨打来的(人家都用是猫头鹰送信的啊喂)

2. 新的学期已经到来,希望大家都可以在这个学期有所收获呀~

3. 本文代码仅作学习参考,勿做其他用途,否则后果自负。

4. 如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:志斌

来源:志斌的python笔记


_往期文章推荐_

利用Python做一个小姐姐词云跳舞视频




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119948