python 을 사용 하여 웨 이 보 데 이 터 를 추출 하여"마음"을 만 듭 니 다.

머리말
1 년 에 한 번 있 는 개 학대 축제 가 마침내 지나 갔다.친구 들 사이 에서 각종 햇볕 을 쬐 고 셀 카 를 찍 으 며 아 이 를 말리 고 맛 있 는 음식 을 말리 고 수은애 의 것 이다.프로그래머 가 무엇 을 말리 고 있 습 니까?프로그래머 가 잔업 을 하고 있 습 니 다.그래도 선물 은 빠 질 수 없 는데 뭘 드릴 까요?프로그래머 로 서 특별한 선물 을 준 비 했 습 니 다.예전 에 보 낸 웨 이 보 데이터 로'사랑'을 만 들 었 습 니 다.감동 해서 울 었 을 거 라 고 생각 합 니 다.하하.
준비 작업
생각 이 떠 오 른 후에 행동 하기 시 작 했 습 니 다.자 연 스 럽 게 가장 먼저 떠 오 르 는 것 은 바로 Python 입 니 다.대체적으로 생각 하 는 것 은 바로 웨 이 보 데 이 터 를 기어 내 리 는 것 입 니 다.데 이 터 는 세척 과 가공 을 거 친 후에 단 어 를 나 누 어 처리 하고 처리 한 데 이 터 는 단어 클 라 우 드 도구 에 건 네 주 며 과학 계산 도구 와 그림 그리 기 도구 에 맞 춰 이미지 로 만 듭 니 다.관련 된 도 구 는 다음 과 같 습 니 다.
requests 는 네트워크 에서 웨 이 보 데 이 터 를 추출 하고 말 을 더 듬 어 중국어 단어 처 리 를 요청 하 는 데 사 용 됩 니 다.단어 클 라 우 드 처리 라 이브 러 리 wordcloud,이미지 처리 라 이브 러 리 Pillow,과학 컴 퓨 팅 도구 NumPy,MATLAB 와 유사 한 2D 그래 픽 라 이브 러 리 Matplotlib
도구 설치
이 공구 꾸러미 를 설치 할 때 시스템 플랫폼 에 따라 다른 오류 가 발생 할 수 있 습 니 다.wordcloud,requests,jieba 는 일반적인 pip 방식 으로 온라인 으로 설치 할 수 있 습 니 다.

pip install wordcloud
pip install requests
pip install jieba
Windows 플랫폼 에 Pillow,NumPy,Matplotlib 를 직접 pip 로 온라인 으로 설치 하면 여러 가지 문제 가 발생 할 수 있 습 니 다.추천 하 는 방식 은 Python Extension Packages for Windows 1 이라는 제3자 플랫폼 에서 해당 하 는.whl 파일 을 다운로드 하여 설치 하 는 것 입 니 다.자신의 시스템 환경 에 따라 cp 27 에 대응 하 는 python 2.7,amd 64 에 대응 하 는 64 비트 시스템 을 다운로드 할 수 있 습 니 다.로 컬 다운로드 후 설치

pip install Pillow-4.0.0-cp27-cp27m-win_amd64.whl
pip install scipy-0.18.0-cp27-cp27m-win_amd64.whl
pip install numpy-1.11.3+mkl-cp27-cp27m-win_amd64.whl
pip install matplotlib-1.5.3-cp27-cp27m-win_amd64.whl
다른 플랫폼 은 오류 알림 에 따라 Google 에서 해결 할 수 있 습 니 다.또는 Anaconda 를 직접 기반 으로 개발 되 었 습 니 다.Python 의 한 가지 로 대량의 과학 계산,기계 학습 모듈 이 내장 되 어 있 습 니 다.
데이터 가 져 오기
시 나 닷 컴 웨 이 보가 공식 적 으로 제공 한 API 는 슬 래 그 로 사용자 가 최근 에 발표 한 5 개의 데 이 터 를 얻 을 수 밖 에 없다.그 다음 에 파충류 로 데 이 터 를 잡 으 려 면 잡기 전에 난이 도 를 평가 하고 누가 다 썼 는 지 살 펴 보 자.GitHub 에서 한 바퀴 돌 았 는데 수 요 를 만족 시 키 지 못 했다.오히려 나 에 게 약간의 아 이 디 어 를 제공 하여 스스로 파충 류 를 쓰기 로 결정 했다.
4이동 단인터넷 주 소 를 사용 하여 데 이 터 를 찾 습 니 다.발견 페이지 를 나 누 어 웨 이 보 데 이 터 를 얻 을 수 있 고 돌아 오 는 데 이 터 는 json 형식 으로 매우 편리 합 니 다.그러나 이 인 터 페 이 스 는 로그 인 한 cookies 정보 가 필요 합 니 다.자신의 계 정 에 로그 인하 면 Chrome 브 라 우 저 를 통 해 Cookies 정 보 를 찾 을 수 있 습 니 다.

구현 코드:

def fetch_weibo():
api = "http://m.weibo.cn/index/my?format=cards&page=%s"
for i in range(1, 102):
response = requests.get(url=api % i, cookies=cookies)
data = response.json()[0]
groups = data.get("card_group") or []
for group in groups:
text = group.get("mblog").get("text")
text = text.encode("utf-8")
text = cleanring(text).strip()
yield text
웨 이 보 의 총 페이지 수 를 보 는 것 은 101 입 니 다.한 목록 의 대상 을 한꺼번에 되 돌려 주 는 데 메모리 가 너무 많이 드 는 것 을 고려 하여 함 수 는 yield 로 생 성 기 를 되 돌려 줍 니 다.그 밖 에 텍스트 를 데이터 로 세척 해 야 합 니 다.예 를 들 어 구두점 기호,HTML 태그,'퍼 가기 웨 이 보'와 같은 글 자 를 제거 해 야 합 니 다.
데이터 저장
데 이 터 를 얻 은 후에 우 리 는 그것 을 오프라인 으로 저장 하여 다음 에 반복 적 으로 사용 할 수 있 도록 하고 중복 적 으로 기어 오 르 는 것 을 피해 야 한다.다음 에 사용 할 수 있 도록 csv 형식 으로 weibo.csv 파일 에 저장 합 니 다.csv 파일 에 데 이 터 를 저장 하여 열 었 을 때 난 장 판 일 수 있 습 니 다.괜 찮 습 니 다.notepad+로 보 세 요.난 장 판 이 아 닙 니 다.

def write_csv(texts):
with codecs.open('weibo.csv', 'w') as f:
writer = csv.DictWriter(f, fieldnames=["text"])
writer.writeheader()
for text in texts:
writer.writerow({"text": text})
def read_csv():
with codecs.open('weibo.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
yield row['text']
분사 처리
weibo.csv 파일 에서 읽 은 모든 웨 이 보 를 분사 처리 한 후 워드 클 라 우 드 생 성 단어 클 라 우 드 에 건 네 줍 니 다.말 을 더 듬 는 단 어 는 대부분의 중국어 사용 장면 에 적용 되 며,단어 창고 stopwords.txt 를 사용 하여 쓸모없는 정보(예 를 들 어,그렇다면,등)를 걸 러 냅 니 다.

def word_segment(texts):
jieba.analyse.set_stop_words("stopwords.txt")
for text in texts:
tags = jieba.analyse.extract_tags(text, topK=20)
yield " ".join(tags)
그림 생 성
데이터 단 어 를 처리 하면 워드 클 라 우 드 에 처리 할 수 있 습 니 다.워드 클 라 우 드 는 데이터 에 있 는 각 단어 가 나타 나 는 빈도,가중치 비례 열 에 따라 키 워드 를 표시 하 는 글꼴 크기 입 니 다.그림 과 같은 사각형 그림 생 성:

예,생 성 된 그림 은 미 적 감각 이 없습니다.선물 을 해 야 하 는 것 도 손 에 넣 어야 자랑 하기 쉽 습 니 다.그러면 우 리 는 예술 적 감각 이 풍부 한 그림 을 모델 로 삼 아 예 쁜 그림 을 모사 합 니 다.나 는 인터넷 에서'마음'형 그림 을 찾 았 다.

이미지 코드 생 성:

def generate_img(texts):
data = " ".join(text for text in texts)
mask_img = imread('./heart-mask.jpg', flatten=True)
wordcloud = WordCloud(
font_path='msyh.ttc',
background_color='white',
mask=mask_img
).generate(data)
plt.imshow(wordcloud)
plt.axis('off')
plt.savefig('./heart.jpg', dpi=600)
주의해 야 할 것 은 처리 할 때 matplotlib 에 중국어 글꼴 을 지정 해 야 합 니 다.그렇지 않 으 면 오류 가 표 시 됩 니 다.글꼴 폴 더 를 찾 습 니 다.C:\Windows\Fonts\\Microsoft YaHei UI 에서 이 글꼴 을 복사 하고 matplotlib 설치 디 렉 터 리 로 복사 합 니 다.C:\Python 27\Lib\site-packages\\matplotlib\mpl-data\fonts\ttf 에서
하마터면 이렇게 될 뻔 했다.

내 가 자 랑스 럽 게 이 그림 을 그녀 에 게 보 냈 을 때 이런 대화 가 나 왔 다.
이것 은 무엇 입 니까?
나:하트 야,직접 만 든 거 야.
이렇게 전문 적 이 고 감동 적 이 야.니 눈 에는 python 밖 에 없어.나 없어(울 고 웃 고)
나:마음 에 python 이 있 는데
내 말 이 틀린 것 같 아.하하 하
전체 코드 는인터페이스다운로드 할 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기