python 웹 페이지 판 QQ 공간 을 기어 올 라 각종 도표 생 성
https://github.com/kuishou68/python
각종 도표 의 실현 효과
내용 을 말 하 다
개성화
매년 총 주 상도,매년 칭찬 과 평론 접선 도 를 발표 하 다
7 일 친구 동적 막대 그래프,떡 그림
사용 방법
구 글 브 라 우 저 에 따라 지 정 된 버 전의 구동 을 다운로드 하 십시오http://chromedriver.storage.googleapis.com/index.html
구동 은 두 개의 python 스 크 립 트 와 같은 디 렉 터 리 에 넣 습 니 다.제 버 전 은 90.0.4430 입 니 다.자신의 버 전 을 보고 다운로드 한 후에 제 chromedriver.exe 를 교체 하 십시오!
여기에 제3자 가방 을 많이 사 용 했 습 니 다.마 우 스 를 빨간색 가방 명의 로 하고 Alt+Enter 로 가방 을 안내 합 니 다.실패 하면 콘 솔 에서 아래 의 필 살기 를 사용 합 니 다.
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
주 코드
qq 공간 txt.py
import time
from selenium import webdriver
from lxml import etree
# ,
friend = '1569339843' # QQ ,
user = '783533896' # QQ
pw = '1323mkoNJI.@' # QQ
#
chrome_driver = 'chromedriver.exe'
driver = webdriver.Chrome(executable_path=chrome_driver)
#
driver.maximize_window()
# qq
driver.get("http://i.qq.com")
# frame,
driver.switch_to.frame("login_frame")
time.sleep(3)
#
driver.find_element_by_id("switcher_plogin").click()
time.sleep(3)
# qq
driver.find_element_by_id("u").send_keys(user)
time.sleep(5)
#
driver.find_element_by_id("p").send_keys(pw)
time.sleep(5)
#
driver.find_element_by_id("login_button").click()
time.sleep(5)
# webdriver
driver.switch_to.default_content()
time.sleep(5)
# url, friend
driver.get("http://user.qzone.qq.com/" + friend + "/311")
time.sleep(5)
next_num = 0 # “ ” id
while True:
# , ,
# 1 6 5
for i in range(1, 6):
height = 20000 * i # 20000
strWord = "window.scrollBy(0," + str(height) + ")"
driver.execute_script(strWord)
time.sleep(4)
# <frame> <iframe> ,webdriver frame,
# frame,
driver.switch_to.frame("app_canvas_frame")
selector = etree.HTML(driver.page_source)
divs = selector.xpath('//*[@id="msgList"]/li/div[3]')
# a
with open('qq_word.txt', 'a', encoding="utf-8") as f:
for div in divs:
qq_name = div.xpath('./div[2]/a/text()')
qq_content = div.xpath('./div[2]/pre/text()')
qq_time = div.xpath('./div[4]/div[1]/span/a/text()')
qq_praise = div.xpath('./div[4]/div[2]/span/span/a[2]/text()')
qq_comment = div.xpath('./div[4]/div[2]/a[3]/text()')
qq_name = qq_name[0] if len(qq_name) > 0 else ''
qq_content = qq_content[0] if len(qq_content) > 0 else ''
qq_content = qq_content.replace('
', ' ')
qq_time = qq_time[0] if len(qq_time) > 0 else ''
qq_praise = qq_praise[0] if len(qq_praise) > 0 else ''
qq_comment = qq_comment[0] if len(qq_comment) > 0 else ''
print(qq_name, qq_time, qq_content, qq_praise, qq_comment)
f.write(qq_content + "
")
# ,“ ” id ,
if driver.page_source.find('pager_next_' + str(next_num)) == -1:
break
# “ ” , ,
driver.find_element_by_id('pager_next_' + str(next_num)).click()
# “ ” id
next_num += 1
# , frame
driver.switch_to.parent_frame()
#
driver.quit()
각종 도표 의 생 성
import pandas as pd
from pyecharts.charts import Bar
from pyecharts.charts import Pie
import pyecharts.options as opts
from pyecharts.charts import Line
import re
df_excel = pd.read_excel('qq_excel.xlsx') # sheet=0 Pandas DataFrame'
def getTimeStr(row):
item = row[' ']
if pd.isnull(item) | pd.isna(item):
return
data = item.split(' ')[0]
return data
#
def readCount(result, row):
timeData = getTimeStr(row)
if timeData == None: return
if timeData in result.keys():
result[timeData] += 1
else:
result[timeData] = 1
#
def readThumb(result, row):
item = row[' ']
if pd.isnull(item):
return
# data = re.match(r' \((\d+).*', item, re.M | re.I)
if len(item.split("(")) <= 1:
return
data = item.split("(")[1].split(")")[0]
timeData = getTimeStr(row)
if timeData == None: return
if timeData in result.keys():
result[timeData] += int(data)
else:
result[timeData] = int(data)
#
def readComment(result, row):
item = row[' ']
if pd.isnull(item):
return
# data = re.match(r' \((\d+).*', item, re.M | re.I)
if len(item.split("(")) <= 1:
return
data = item.split("(")[1].split(")")[0]
timeData = getTimeStr(row)
if timeData == None: return
if timeData in result.keys():
result[timeData] += int(data)
else:
result[timeData] = int(data)
def readExcel(df_excel):
count = {}
result = {}
thumb = {}
comment = {}
for index, row in df_excel.iterrows():
readCount(count, row)
readThumb(thumb, row)
readComment(comment, row)
result['count'] = count
result['thumb'] = thumb
result['comment'] = comment
return result
def getKeyAndVal(keyWord):
data = readExcel(df_excel).get(keyWord)
key = []
value = []
for item in data.keys():
key.append(item)
value.append(data[item])
key.reverse()
value.reverse()
return [key, value]
#
def paintBar():
count = readExcel(df_excel).get('count')
# V1
data = getKeyAndVal('count')
print(data[0])
d = (
Bar()
.add_xaxis(data[0])
.add_yaxis(" ", data[1])
.render(" .html")
)
paintBar()
#
def paintLine():
commentData = getKeyAndVal('comment')
thumbData = getKeyAndVal('thumb')
xaxis_data = commentData[0]
commentValue = commentData[1]
thumbValue = thumbData[1]
d = (
Line()
.add_xaxis(xaxis_data=xaxis_data)
.add_yaxis(" ", y_axis=commentValue)
.add_yaxis(" ", y_axis=thumbValue)
.render(" .html") #
)
paintLine()
기타 코드 자체 다운로드 항목 보기이상 은 python 이 웹 페이지 의 QQ 공간 을 기어 올 라 각종 도표 의 상세 한 내용 을 생 성 하 는 것 입 니 다.python 이 QQ 공간 을 기어 오 르 는 것 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.