美文网首页爬虫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