运行环境: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
...
...
...
网友评论
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")
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")