python 웹 페이지 판 QQ 공간 을 기어 올 라 각종 도표 생 성

github 원본 주소:
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 공간 을 기어 오 르 는 것 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기