美文网首页Python三期爬虫作业
【Python爬虫】- 统计各自作业完成情况

【Python爬虫】- 统计各自作业完成情况

作者: Ubuay | 来源:发表于2017-08-20 18:50 被阅读27次

    目录

    一、思路
    二、封装函数
    三、运行结果

    一、思路

    抓取作业提交专题文章数据,并统计各自作业的完成情况。

    需要注意的地方:

    • 思路和上篇文章相似,把专题页当作多页的电影页来获取源码。
    • 通过观察 url 的方法获取源码的方法在这里行不通:用http://www.jianshu.com/c/1b31f26b6af0只能获取几篇文章的源码。
    • Scrapy爬取"单页面"数据(一)文章有介绍用抓包的方法获取 url。
    • 我得到的 url 是:http://www.jianshu.com/c/1b31f26b6af0?order_by=added_at&page=2
    • 观察发现url 的尾数分别从2到17,不过尾数为17的 url 获取不到内容。
    • 一个 url 能爬到最多10篇文章,
    • 最后定义一个函数用于统计完成作业的次数。

    二、封装函数

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import requests
    from lxml import etree
    
    
    # 专题页:
    def get_title(url):
        res = requests.get(url)
        res.encoding = "utf-8"
        html = res.text
        selector = etree.HTML(html)
        infos = selector.xpath('//ul[@class="note-list"]//div[@class="content"]//a[@class="title"]')
        for info in infos:
            title_url = 'http://www.jianshu.com' + info.xpath('@href')[0]
            title_text = info.xpath('text()')[0]
            get_title_source(title_url, title_text)
    
    # 文章页:
    def get_title_source(title_url, title_text):
        new_url = title_url
        new_res = requests.get(new_url)
        new_res.encoding = "utf-8"
        new_html = new_res.text
        new_selector = etree.HTML(new_html)
        new_fos = new_selector.xpath('//div[@class="note"]//div[@class="article"]//div[@class="info"]//a')
        for new_fo in new_fos:
            author_name = new_fo.xpath('text()')[0]
            # print(author_name)
            b.append(author_name)
            
    # 函数用于统计提交次数
    def t_imes(b):
        mylist = b
        myset = set(mylist)
        for item in myset:
            print("%r 提交次数:%r" %(item, mylist.count(item)))
    
    if __name__ == '__main__':
        b = [ ]
        base_url = 'http://www.jianshu.com/c/1b31f26b6af0?order_by=added_at&page=%s'
        for page in range(1, 17):
            url = base_url %str(page)
            # print('第 %r 页' % page)
            get_title(url)
        t_imes(b)
    

    三、运行结果

    作业提交次数

    相关文章

      网友评论

        本文标题:【Python爬虫】- 统计各自作业完成情况

        本文链接:https://www.haomeiwen.com/subject/hpafdxtx.html