最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python爬虫采集知乎后如何输出内容?

    正文概述    2020-04-04   392

    python爬虫采集知乎后如何输出内容?

    每次去快递点拿包裹的时候,一排排的货架分类摆好,小编自己也可以根据取件号码找到物品。同样的,我们获取了大量的数据如果不及时的把它们分类整理,很快下次就理不清头绪了。有没有什么方法可以在我们用python爬虫采集知乎后整理成表格的形式,这样也方便查看?接下来起看看吧。


    数据包括回答的问题标题,回答的url,回答的内容文本,获赞数,发布时间及数据采集时间。

    爬虫的功能分为以下4个部分:

    • 采用 selenium 启动无头浏览器

    • 爬取用户回答列表页的标题与url

    • 爬取每个回答的内容、发布时间与获赞数

    • 把爬取到的数据用表格文件保存

     代码如下:

    """采用 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爬虫采集知乎后如何输出内容?


    看完上面的成果展示,是不是非常一目了然~标题、来源、回答之类的我们都可以清晰的阅读。更多Python学习推荐:起源地模板网教学中心


    起源地下载网 » python爬虫采集知乎后如何输出内容?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元