美文网首页爬虫PythonPython 运维
Python 简单爬去简书文章列表

Python 简单爬去简书文章列表

作者: iOneWay | 来源:发表于2016-07-06 16:14 被阅读848次

    运行环境:python3.5.1 , 库:bs4
    爬取一位大神的简书文章列表
    直接代码:

    # coding=utf-8
    
    from urllib.request import urlopen
    from urllib.error import URLError
    from bs4 import BeautifulSoup
    
    
    def getName(url):
        try:
            html = urlopen(url)
        except URLError as e:
            print(e)
            return None
    
        try:
            bsObj = BeautifulSoup(html, "html.parser")
            namelist = bsObj.select('h4 > a[target="_blank"]')
        except AttributeError as e:
            print(e)
            return None
        for name in namelist:
            print(name.string)
    
    
    for index in range(1, 10):
        getName(
            "http://www.jianshu.com/users/c98451170fd6/latest_articles?page=%d" % index)
    
    

    如果你是使用subl IDE 利用插件直接在subl 中运行的话,可能会在subl控制台中发现中文都是乱码,这个问题我也一直找不到解决办法。为了得到正确的运行结果请在终端下用命令进行运行。
    运行结果:

    weiwangdeMacBook-Pro:Desktop wangwei$ python findName.py 
    百词斩PK词汇重点整理(2016.6)
    简明Python教程笔记(附代码)
    Python input和raw_input的区别
    Python算法100题--034
    linux硬链接和软链接
    Linux用户及文件权限管理
    Linux概念和基础操作
    Linux系统介绍
    操作系统知识总结
    Linux常用命令
    PyCharm教程
    Python算法100题--033
    Python算法100题--032
    时间管理的七句话---阮一峰
    请分别列出HTML、JavaScript、CSS、Java、php、python的注释代码形式。
    TCP/IP常问问题
    常见网络协议及对应端口号
    TCP/UDP区别
    网络架构模型
    常见正则表达式
    常见网络操作命令
    进制的计算
    开源版本讨论
    Python算法100题--031
    脸谱化过去的你
    HTML 李炎恢笔记
    IP地址分类
    Python算法100题--030
    ...
    ...
    ...
    

    相关文章

      网友评论

      • 82709210c359:受了楼主的启发 写了个,可以爬取作者的所有列别页面
        def getArticleTitle(url, page=1):
        is_finish = False

        while not is_finish:
        page_url = url % page
        try:
        response = requests.get(page_url, headers={
        'Connection': 'Keep-Alive',
        'Accept': 'text/html, application/xhtml+xml, */*',
        'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
        })

        if len(response.history):
        is_finish = True
        return None

        BS4 = BeautifulSoup(response.text, 'lxml')

        except e:
        print("没有数据")
        return None

        if BS4.title == '您要找的页面不存在':
        is_finish = True
        return None

        try:
        titleList = BS4.select('#list-container .note-list li .title')
        except e:
        print("抓取错误")
        return None

        for name in titleList:
        print(name.string)

        page = page + 1

        getArticleTitle("http://www.jianshu.com/u/c98451170fd6?order_by=shared_at&page=%d")
      • 图书馆馆长:学习你的代码时发现你的代码不能很好的爬到全部的文章列表,所以优化了一下你的代码 :smile:
        def getName(url,page=1):
        try:
        html = urlopen(url+'?page=%d' % page)
        except URLError as e:
        print(e)
        return None

        try:
        bsObj = BeautifulSoup(html, "html.parser")
        namelist = bsObj.select('h4 > a[target="_blank"]')
        if len(namelist) == 0:
        print(page)
        return None
        except AttributeError as e:
        print(e)
        return None
        for name in namelist:
        print(name.string)
        page += 1
        getName(url,page)

        getName("http://www.jianshu.com/users/c98451170fd6/latest_articles")
      • d90a9b21c108:初学者瞻仰大神
      • 大邓和他的python:学到很多,我之前写脚本,异常处理部分直接except:
      • bluescorpio:编码问题可以看一下这个http://www.jianshu.com/p/ce118de0c3b6,希望对你有帮助

      本文标题:Python 简单爬去简书文章列表

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