主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, greenwillow, v-green, vue-pro, healer-readable, mk-cute, jzman, geek-black, awesome-green, qklhk-chocolate
贡献主题:https://github.com/xitu/juejin-markdown-themes
theme: juejin highlight:
烦恼波及
女票是做运营的,一直苦恼于起推文标题。领导还会频繁突袭:“XX,给这次活动拟一个标题。”
tmd,自己分内的活都干不完,却要为活动策划起标题流汗,不是自己的活,还得笑着干!着实烦人!
更坏的是,负面情绪都是会传染的,女票的烦恼就是咱的烦恼,甚至是大于咱的烦恼。/(ㄒoㄒ)/~~
不过幸好!,咱程序员的本领就是四个字:解决问题。(●'◡'●)
为此,我们可以花几分钟简单写一个爬虫,再想要什么标题,就不用空想了,直接让她挑选就行!女孩子什么的,最爱“逛该”了!
闲言少叙,直接奥里给!
解决思路
本瓜其实是个爬虫新手,不过这也不是啥复杂问题,咱就直接上 python !
(不过事后感觉还是 node 好用,毕竟 js 操作咱都“精通”......)
基本思路:
- 安装环境;
- 选取目标网站;
- 写脚本;
- 运行并解析返回结果;
- 生成文件;
下面针对以上说说几个要点:
- python 安装分为 python2 和 python3,python3 并未向下兼容,两者区别较大,所以建议都安装。命令行也做区分,教程大把,不做赘述;
- 选取目标网站,这个很关键,也需要花一点时间。需要分析页面内容和自己的需求匹配程度,然后看请求和数据返回结构来作出选择;
- 写爬虫脚本的思路基本上是“引入库”=>“读数据”=>“解析数据”=>“写数据”;
- 解析的过程是最重要且最复杂的过程,需要数据结构理的清,正则匹配用的好;
- 我们根据需要生成不同的文件,比如 .txt 、.xml 等,它们都有对应的库,调用即可;
代码实现
接下来直接上代码:
- 注:爬取数据有的是从返回的 HTML DOM 里面拿,有的是从 XHR/JS 返回的 DATA 里面拿;根据需要选择,本次取后者~
// index.py
代码语言:javascript复制# 供获取数据
import requests
# 供字符串转数组
import json
# 设置 headers 防止被封
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3"
}
# 变量申明
write_content = ''
# 目标 url,解析参数很重要,此处的 size 原本为 10,可调整至 1000,就不用写循环了
url = "https://v2.sohu.com/integration-api/mix/region/10431?size=1000&adapter=pc&secureScore=50&page=1"
# 接受数据字符串
res = requests.get(url, headers=headers).text
# 字符串转 json
j = json.loads(res)
# 拿到 data 数据
dataArr=j["data"]
# 遍历
for i in dataArr:
try:
print(i['title'])
# 标题 换行
write_content = i['title'] '.n' '.n'
with open("souhuEduTitle.txt","a",encoding="utf-8") as f:
f.write(write_content)
# 此处错误捕获非常重要,目标网站列表有些是广告项,没有 title 属性
except KeyError:
pass
运行
代码语言:javascript复制python3 index.py
就能得到几百条关于中小学教育行业文章标题的爬取数据啦:
意外收尾
如何?花三分钟给女票写一个爬虫,咱也要做一回模范男友,解决女票痛之痛。哈哈