本人小白 - 正在学习python突然看到爬虫很有意思就过来试试看
robot协议 在每个网站的跟域名加上/robots.txt即可访问文档 例如 www.baidu.com/robots.txt
引入包
import requests
from bs4 import BeautifulSoup
发送请求
header = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0'}
response = requests.get(url, headers=header)
html = response.text
解析html页面结构找到放置数据的标签
查看html结构之后可以看到作者整个数据在div class="wrap"
div中
authors_info = soup.find_all('div',class_='wrap')
结果是这样的,结构很明了,就展示了一条数据 方便查看
[<div class="wrap">
<a href="/users/b3b2c03354f3" target="_blank">
<img alt="180" class="avatar" src="//upload.jianshu.io/users/upload_avatars/3343569/93161bfa-dda9-49ee-88e1-a85ec4227232.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/180/h/180"/>
<h4 class="name">
吴晓布
</h4>
<p class="description">顺丰速运集团前高管,现某创业公司合伙人兼CT...</p>
</a>
<div class="follow-button" props-data-following="false" props-data-user-id="3343569"></div>
<hr/>
<div class="meta">最近更新</div>
<div class="recent-update">
<a class="new" href="/p/b0a42bc9be31" target="_blank">知识结构 | 如何构建你的知识结构</a>
<a class="new" href="/p/6bfcdc3d0bb3" target="_blank">致读者:没有过不去的坎,只有过不完的坎</a>
<a class="new" href="/p/4ee2e11e454e" target="_blank">摄影实战 | 如何用无人机拍出精彩风光大片的技巧清单</a>
</div>
</div>]
他们的个人页面在<a href="/users/b3b2c03354f3" target="_blank">
里,所以得获取个人页面的路径加上
https://www.jianshu.com
+a标签的内容即可
注意这里是数组,所以不能直接取得a标签
循环一下即可
['/users/b3b2c03354f3', '/users/e0ef486d9b90', '/users/c5580cc1c3f4', '/users/5f27d4962af5', '/users/ffc565d738a3', '/users/b91cc2d507d0', '/users/55b597320c4e', '/users/7406f22f461e', '/users/4062aaeba322', '/users/08e6960f7ed9', '/users/00e4497354ac', '/users/b67d47b0505a', '/users/a67ad639eb06', '/users/0044a6881d5e', '/users/98935ac50373', '/users/9607c7976e1c', '/users/86b81ed8e35c', '/users/92eb338437ee', '/users/0c5379fd193e',
'/users/1446a350e58a', '/users/7591e24c8494', '/users/13cba2dc6b23', '/users/9d73eac9d201', '/users/b52ff888fd17']
下一步需要做的就是把每一项加入https://www.jianshu.com
前缀 循环时加入即可
['https://www.jianshu.com/users/b3b2c03354f3', 'https://www.jianshu.com/users/e0ef486d9b90',
'https://www.jianshu.com/users/c5580cc1c3f4', 'https://www.jianshu.com/users/5f27d4962af5',
'https://www.jianshu.com/users/ffc565d738a3', 'https://www.jianshu.com/users/b91cc2d507d0',
'https://www.jianshu.com/users/55b597320c4e', 'https://www.jianshu.com/users/7406f22f461e',
'https://www.jianshu.com/users/4062aaeba322', 'https://www.jianshu.com/users/08e6960f7ed9',
'https://www.jianshu.com/users/00e4497354ac', 'https://www.jianshu.com/users/b67d47b0505a',
'https://www.jianshu.com/users/a67ad639eb06', 'https://www.jianshu.com/users/0044a6881d5e',
'https://www.jianshu.com/users/98935ac50373', 'https://www.jianshu.com/users/9607c7976e1c',
'https://www.jianshu.com/users/86b81ed8e35c', 'https://www.jianshu.com/users/92eb338437ee',
'https://www.jianshu.com/users/0c5379fd193e', 'https://www.jianshu.com/users/1446a350e58a',
'https://www.jianshu.com/users/7591e24c8494', 'https://www.jianshu.com/users/13cba2dc6b23',
'https://www.jianshu.com/users/9d73eac9d201', 'https://www.jianshu.com/users/b52ff888fd17']
下一步就是分析作者页面看页面结构
可以清楚的看到页面结构 也就是说这里才是我们要解析的结构
这里就要用到很骚气的BeautifulSoup
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
这是文档地址 安装引入就不说了哦 真的好强大
需要的数字 都在p标签里
作者姓名在a class="name" 标签里 so
剩下的就很简单了
soup = BeautifulSoup(html, 'html.parser') //html解析 官网文档有详细介绍
author_info = soup.find_all('div',class_='info')[0]
author_info_name = soup.find_all('a',class_='name')[0]
获取div class="info"
<div class="info">
<ul>
<li>
<div class="meta-block">
<a href="/users/b3b2c03354f3/following">
<p>93</p>
关注
<i class="iconfont ic-arrow"></i>
</a>
</div>
</li>
<li>
<div class="meta-block">
<a href="/users/b3b2c03354f3/followers">
<p>92526</p>
粉丝
<i class="iconfont ic-arrow"></i>
</a>
</div>
</li>
<li>
<div class="meta-block">
<a href="/u/b3b2c03354f3">
<p>172</p>
文章
<i class="iconfont ic-arrow"></i>
</a>
</div>
</li>
<li>
<div class="meta-block">
<p>507641</p>
<div>字数</div>
</div>
</li>
<li>
<div class="meta-block">
<p>10092</p>
<div>收获喜欢</div>
</div>
</li>
</ul>
</div>
然后获取所有info
里的数字
author_info_numbers = author_info.find_all('p')
获取到作者名 还有所有数据存储的地方
吴晓布
[93, 92523, 172, 507641, 10092]
寻麦
[62, 110857, 126, 252938, 4365]
简书大学堂
[42, 221019, 293, 494557, 13052]
文字怪人
[103, 74240, 33, 134591, 8386]
格列柯南
[170, 85561, 309, 570692, 12707]
冰千里
[8, 89311, 142, 354906, 4234]
简书版权
[46, 286461, 232, 400041, 31260]
雨落荒原
[151, 97188, 77, 285370, 3418]
念远怀人
[38, 78876, 190, 514656, 4898]
须僧
[22, 60215, 36, 125810, 875]
经年鲤
[90, 23148, 87, 388741, 1915]
叶凝惋潇
[9, 32936, 64, 241658, 174]
小托夫
[47, 23470, 38, 270325, 673]
儿童性教育老师胡佳威
[14, 28964, 48, 112042, 272]
赫连伯伯
[22, 30528, 53, 105873, 516]
旸晓昆
[86, 10838, 14, 77134, 247]
乔汉童
[47, 26982, 130, 462652, 1086]
道长是名思维贩子
[28, 70155, 46, 156259, 39115]
狼医生
[43, 21590, 100, 384217, 896]
aloho
[28, 49276, 70, 609433, 495]
陈慕妤
[24, 61319, 117, 419132, 53350]
汪波_偶遇科学
[74, 61021, 57, 241599, 1077]
孙一杯
[14, 7518, 16, 99887, 208]
简宝玉
[17, 193588, 118, 80783, 14640]
稍作处理
[['吴晓布', [93, 92600, 172, 507641, 10094]],
['寻麦', [62, 110935, 126, 252938, 4365]],
['简书大学堂', [42, 221094, 293, 494557, 13053]],
['文字怪人', [103, 74318, 33, 134591, 8386]],
['格列柯南', [170, 85636, 309, 570692, 12708]],
['冰千里', [8, 89384, 142, 354906, 4235]],
['简书版权', [46, 286538, 232, 400041, 31263]],
['雨落荒原', [151, 97262, 77, 285370, 3420]],
['念远怀人', [38, 78951, 190, 514656, 4902]],
['须僧', [22, 60289, 36, 125810, 875]],
['经年鲤', [90, 23152, 87, 388741, 1916]],
['叶凝惋潇', [9, 32940, 64, 241658, 174]],
['小托夫', [47, 23474, 38, 270325, 673]],
['儿童性教育老师胡佳威', [14, 28969, 48, 112042, 272]],
['赫连伯伯', [22, 30532, 53, 105873, 516]],
['旸晓昆', [86, 10842, 14, 77134, 247]],
['乔汉童', [47, 26985, 130, 462652, 1086]],
['道长是名思维贩子', [28, 70158, 46, 156259, 39115]],
['狼医生', [43, 21593, 100, 384217, 896]],
['aloho', [28, 49279, 70, 609433, 495]],
['陈慕妤', [24, 61322, 117, 419132, 53352]],
['汪波_偶遇科学', [74, 61024, 57, 241599, 1077]],
['孙一杯', [14, 7520, 16, 99887, 208]],
['简宝玉', [17, 193596, 118, 80783, 14640]]]
写到这里已经2018-6-28 21:52:44,下班很久了,但是很开心 python小白露出诡异傲娇的笑容
然后在给这些"死数据" 添加点内容
-----------------------------------
作者姓名: 吴晓布
获得: 93 关注
作者拥有: 92621 个分数
共写了: 172 篇
共写了: 507641 字
收获: 10094 个喜欢
-----------------------------------
作者姓名: 寻麦
获得: 62 关注
作者拥有: 110957 个分数
共写了: 126 篇
共写了: 252938 字
收获: 4365 个喜欢
-----------------------------------
作者姓名: 简书大学堂
获得: 42 关注
作者拥有: 221114 个分数
共写了: 293 篇
共写了: 494557 字
收获: 13054 个喜欢
-----------------------------------
作者姓名: 文字怪人
获得: 103 关注
作者拥有: 74340 个分数
共写了: 33 篇
共写了: 134591 字
收获: 8386 个喜欢
-----------------------------------
作者姓名: 格列柯南
获得: 170 关注
作者拥有: 85658 个分数
共写了: 309 篇
共写了: 570692 字
收获: 12708 个喜欢
-----------------------------------
作者姓名: 冰千里
获得: 8 关注
作者拥有: 89404 个分数
共写了: 142 篇
共写了: 354906 字
收获: 4235 个喜欢
-----------------------------------
作者姓名: 简书版权
获得: 46 关注
作者拥有: 286559 个分数
共写了: 232 篇
共写了: 400041 字
收获: 31263 个喜欢
-----------------------------------
作者姓名: 雨落荒原
获得: 151 关注
作者拥有: 97282 个分数
共写了: 77 篇
共写了: 285370 字
收获: 3420 个喜欢
-----------------------------------
作者姓名: 念远怀人
获得: 38 关注
作者拥有: 78972 个分数
共写了: 190 篇
共写了: 514656 字
收获: 4902 个喜欢
-----------------------------------
作者姓名: 须僧
获得: 22 关注
作者拥有: 60309 个分数
共写了: 36 篇
共写了: 125810 字
收获: 875 个喜欢
-----------------------------------
作者姓名: 经年鲤
获得: 90 关注
作者拥有: 23153 个分数
共写了: 87 篇
共写了: 388741 字
收获: 1916 个喜欢
-----------------------------------
作者姓名: 叶凝惋潇
获得: 9 关注
作者拥有: 32940 个分数
共写了: 64 篇
共写了: 241658 字
收获: 174 个喜欢
-----------------------------------
作者姓名: 小托夫
获得: 47 关注
作者拥有: 23473 个分数
共写了: 38 篇
共写了: 270325 字
收获: 673 个喜欢
-----------------------------------
作者姓名: 儿童性教育老师胡佳威
获得: 14 关注
作者拥有: 28969 个分数
共写了: 48 篇
共写了: 112042 字
收获: 272 个喜欢
-----------------------------------
作者姓名: 赫连伯伯
获得: 22 关注
作者拥有: 30532 个分数
共写了: 53 篇
共写了: 105873 字
收获: 516 个喜欢
-----------------------------------
作者姓名: 旸晓昆
获得: 86 关注
作者拥有: 10841 个分数
共写了: 14 篇
共写了: 77134 字
收获: 247 个喜欢
-----------------------------------
作者姓名: 乔汉童
获得: 47 关注
作者拥有: 26984 个分数
共写了: 130 篇
共写了: 462652 字
收获: 1086 个喜欢
-----------------------------------
作者姓名: 道长是名思维贩子
获得: 28 关注
作者拥有: 70159 个分数
共写了: 46 篇
共写了: 156259 字
收获: 39115 个喜欢
-----------------------------------
作者姓名: 狼医生
获得: 43 关注
作者拥有: 21593 个分数
共写了: 100 篇
共写了: 384217 字
收获: 896 个喜欢
-----------------------------------
作者姓名: aloho
获得: 28 关注
作者拥有: 49280 个分数
共写了: 70 篇
共写了: 609433 字
收获: 495 个喜欢
-----------------------------------
作者姓名: 陈慕妤
获得: 24 关注
作者拥有: 61321 个分数
共写了: 117 篇
共写了: 419132 字
收获: 53352 个喜欢
-----------------------------------
作者姓名: 汪波_偶遇科学
获得: 74 关注
作者拥有: 61024 个分数
共写了: 57 篇
共写了: 241599 字
收获: 1077 个喜欢
-----------------------------------
作者姓名: 孙一杯
获得: 14 关注
作者拥有: 7521 个分数
共写了: 16 篇
共写了: 99887 字
收获: 208 个喜欢
-----------------------------------
作者姓名: 简宝玉
获得: 17 关注
作者拥有: 193597 个分数
共写了: 118 篇
共写了: 80783 字
收获: 14640 个喜欢
2018-6-28 22:12:20
wo zhong yu xie chu lai le !! 坚持就是胜利
完结 撒花
-
遇到但是没用的包
- Numpy
- Counter
- Collections
这些我也不知道是啥 明天再看吧
-
遇到的问题
- 就是数据结构,python中有太多list[] set() tuple dict{}
- 基本语法薄弱,才会导致用这么久 花了我大概3个多将近4个小时 期间又写了个处理log日志的脚本 多看多练就ok了
看到的同学可以一起学习一起交流 也希望有个大神带一带 交流交流意见