> 백엔드 개발 > 파이썬 튜토리얼 > 크롤러 + 시각화 | Python Zhihu 핫 리스트/Weibo 핫 검색 시퀀스 차트(1부)

크롤러 + 시각화 | Python Zhihu 핫 리스트/Weibo 핫 검색 시퀀스 차트(1부)

풀어 주다: 2023-08-10 15:53:10
앞으로
1116명이 탐색했습니다.


이번 호는 일련의 기사입니다. 마지막 기사 Python을 사용하여 Zhihu 핫 리스트/Weibo 핫 검색 데이터를 정기적으로 크롤링하고 후속 시각화를 위해 CSV 파일에 저장합니다. 타이밍 다이어그램 부분은 다음 부분에서 소개하겠습니다. 여러분께 도움이 되길 바랍니다.

涉及到的内容:
pandas — 数据处理
schedule — 定时任务
json — 데이터 형식

read_html — 웹 양식 처리


1. 준비

1.1 모듈 가져오기
import json
import time
import requests
import schedule
import pandas as pd
from fake_useragent import UserAgent
로그인 후 복사


2. 知乎热榜数据

2.1 网页分析
知乎热榜电脑端接口:
https://www.zhihu.com/hot
로그인 후 복사
知乎热榜手机端接口:
https://api.zhihu.com/topstory/hot-list?limit=10&reverse_order=0
로그인 후 복사

注意:电脑端端直接F12调试页即可看到热榜数据,手机端需要借助抓包工具查看,这里我们使用手机端接口(返回json格式数据,解析比较方便)。

크롤러 + 시각화 | Python Zhihu 핫 리스트/Weibo 핫 검색 시퀀스 차트(1부)

2.2 데이터 가져오기

코드:

def getzhihudata(url, headers):
    r = requests.get(url, headers=headers)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    datas = json.loads(r.text)['data']
    allinfo = []
    time_mow = time.strftime("%Y-%m-%d %H:%M", time.localtime())
    print(time_mow)
    for indx,item in enumerate(datas):
        title = item['target']['title']
        heat = item['detail_text'].split(' ')[0]
        answer_count = item['target']['answer_count']
        follower_count = item['target']['follower_count']
        href = item['target']['url']
        info = [time_mow, indx+1, title, heat, answer_count, follower_count, href]
        allinfo.append(info)
    # 仅首次加表头
    global csv_header
    df = pd.DataFrame(allinfo,columns=['时间','排名','标题','热度(万)','回答数','关注数','链接'])
    print(df.head())
로그인 후 복사

定时间隔设置1S:

# 每1分钟执行一次爬取任务:
schedule.every(1).minutes.do(getzhihudata,zhihu_url,headers)
while True:
     schedule.run_pending()
     time.sleep(1)
로그인 후 복사

效果:

크롤러 + 시각화 | Python Zhihu 핫 리스트/Weibo 핫 검색 시퀀스 차트(1부)

2.3 保存数据

df.to_csv('zhuhu_hot_datas.csv', mode='a+', index=False, header=csv_header)
csv_header = False
로그인 후 복사
注意csv_header的设置,涉及到是否写入表头字段。


3. 웨이보 핫 검색 데이터

3.1 웹페이지 분석

웨이보 인기 네스 검색 URL:

https://s.weibo.com/top/summary

크롤러 + 시각화 | Python Zhihu 핫 리스트/Weibo 핫 검색 시퀀스 차트(1부)
F12 웹페이지의 소스 코드 보기:
크롤러 + 시각화 | Python Zhihu 핫 리스트/Weibo 핫 검색 시퀀스 차트(1부)

데이터는

태그 에 있습니다.

3.2 데이터 가져오기

代码:

def getweibodata():
    url = 'https://s.weibo.com/top/summary'
    r = requests.get(url, timeout=10)
    r.encoding = r.apparent_encoding
    df = pd.read_html(r.text)[0]
    df = df.loc[1:,['序号', '关键词']]
    df = df[~df['序号'].isin(['•'])]
    time_mow = time.strftime("%Y-%m-%d %H:%M", time.localtime())
    print(time_mow)
    df['时间'] = [time_mow] * df.shape[0]
    df['排名'] = df['序号'].apply(int)
    df['标题'] = df['关键词'].str.split(' ', expand=True)[0]
    df['热度'] = df['关键词'].str.split(' ', expand=True)[1]
    df = df[['时间','排名','标题','热度']]
    print(df.head())
로그인 후 복사

定时间隔设置1S效果:

크롤러 + 시각화 | Python Zhihu 핫 리스트/Weibo 핫 검색 시퀀스 차트(1부)

3.3 保存数据

df.to_csv('weibo_hot_datas.csv', mode='a+', index=False, header=csv_header)
로그인 후 복사

结果:

크롤러 + 시각화 | Python Zhihu 핫 리스트/Weibo 핫 검색 시퀀스 차트(1부)


위 내용은 크롤러 + 시각화 | Python Zhihu 핫 리스트/Weibo 핫 검색 시퀀스 차트(1부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿