Python学习推荐:python采集知乎后整理成表格的形式

优采云 发布时间: 2021-05-24 20:22

  

Python学习推荐:python采集知乎后整理成表格的形式

  

  每次我去快递站领取包裹时,都会整理好几排货架,然后我可以根据取件号找到物品。类似地,如果我们获取大量数据,如果我们不及时对它们进行排序,那么下一次我们将很快感到困惑。使用python采集器采集 知乎之后,有什么方法可以将其组织成表格,以便查看?接下来,让我们看一下。

  数据包括已回答问题的标题,答案的网址,答案的内容文本,喜欢的次数,发布时间和数据采集时间。

  采集器的功能分为以下4个部分:

  代码如下:

  """采用 python selenium 无头浏览器,爬取单个用户的所有回答数据并保存为表格文件。"""

 

from time import sleep

from datetime import datetime

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

import pandas as pd

 

def start_driver():

    chrome_options = Options()

    chrome_options.add_argument("--headless")

    chrome_options.add_argument("--disable-gpu")

    driver = webdriver.Chrome(options=chrome_options)

    return driver

 

def get_answers_url(driver,url):

    driver.get(url)

    sleep(2)

    rlts = driver.find_elements_by_xpath('//*[@id="Profile-answers"]/div[2]//div/div/h2/div/a')   

    answers = [[rlt.text,rlt.get_attribute("href")] for rlt in rlts]

    return answers

 

def get_answers_text(driver,url):

    driver.get(url)

    sleep(2)

    rlt = driver.find_element_by_class_name('RichContent-inner')

    content = rlt.text

    rlt = driver.find_element_by_class_name("ContentItem-time")

    date = rlt.find_element_by_xpath(".//a/span").get_attribute("data-tooltip")

    rlt = driver.find_element_by_class_name("ContentItem-actions")

    upvote = rlt.find_element_by_xpath(".//span/button").get_attribute("aria-label")

    return [content,date,upvote]

 

driver = start_driver()

url = "https://www.zhihu.com/people/haili-9-70/answers"

answers = get_answers_url(driver,url)

answers_dict = {}

for i in range(len(answers)):

    answers_dict[i] = {}

    answers_dict[i]["title"] = answers[i][0]

    answers_dict[i]["url"] = answers[i][1]

    answers_dict[i]["content"] = get_answers_text(driver,answers[i][1])[0]

    answers_dict[i]["date"] = get_answers_text(driver,answers[i][1])[1]

    answers_dict[i]["upvote"] = get_answers_text(driver,answers[i][1])[2]

    answers_dict[i]["timestamp"] = str(datetime.now())[:-7]

 

df = pd.DataFrame(answers_dict).T

file = "./zhihu_answers_"   str(datetime.now().date())   ".csv"

df.to_csv(file)

  此脚本适合备份您的答案数据。

  性能显示:

  

  阅读上面的结果显示后,很清楚〜我们可以清晰地阅读标题,来源,答案等。更多Python学习建议:JQ教程网络Python百科全书。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线