陈一然並没有听话的去睡午觉,他有种感觉睡下去再睁眼就得第二天了。
    从冰箱里拿出个冰可乐直接放到额头上,颇有点热血的在脑中说:“来,继续,扬名立万就靠你了。”
    【好吧,打开 textwrangler。新建文件,保存为 scraper.py。】
    陈一然照做了。
    【把手放在键盘上。】
    他深呼吸了一下,把手放上去。
    然后他的手指开始动了。
    脑中一行行的文字,陈一然把自己变成了打字机器。
    手指在键盘上飞快地跳动,一行行代码出现在屏幕上。
    from urllib2 import urlopen from beautifulsoup import beautifulsoup import re import json import threading import queue import time import sys
    def init(self, url, depth=1): self.url = url self.depth = depth self.results = [] self.visited = set()
    陈一然的好状態只持续了一会,就开始手酸,还好每次打错茉莉都能及时提醒。
    就这样磨磨唧唧了 3 个小时,陈一然感觉头都快炸了,茉莉终於发话了。
    大约两个小时后,茉莉说:【停。看一下屏幕。】
    陈一然把手从键盘上拿开,甩了甩手腕。
    屏幕上大概是三百行代码。
    “我完全看不懂。”
    本书首发 读小说选 101 看书网,101??????.??????超省心 ,提供给你无错章节,无乱序章节的阅读体验
    【运行一下。打开终端,输入 python scraper.py ,然后回车。】
    陈一然打开终端,照著打了,回车。
    屏幕上开始输出文字,一行一行,很快。
    url: title: example domain links found: 1 headings: h1 - example domain text content: this domain is for use in illustrative examples...
    过了大约十秒,输出停了。
    done. scraped 1 page(s) in 8.3 seconds.
    茉莉:【能跑。继续加功能。】
    接下来的 3 个小时,陈一然又变成了一台打字机。
    茉莉把代码通过他的手指一行行输出。
    中间陈一然饿的不行,又点了个棒约翰,这家是陈一然最爱的披萨店。
    宜家也把家具送了过来,其实为了可以不装家具,陈一然买的都是简单的。
    半个小时装家具,陈一然都觉得算是休息了,比双手闷头打字舒服。
    就这样磨磨唧唧到晚上九点的时候,scraper.py 已经从三百行变成了將近六百行。茉莉加了並发抓取、错误处理、自动跟隨连结、数据导出功能,还写了一个命令行界面。
    【再测试一次 python scraper.py 。这次写一个真实网站。】
    陈一然在终端里输入了 cnn 官网的地址,回车。
    屏幕上飞速滚动著输出。url、標题、正文摘要、发布时间、图片连结…… 各种信息被自动提取出来,排列得整整齐齐。
    done. scraped 47 page(s) in 2 minutes 14 seconds.
    陈一然盯著那行字。
    47 个页面,2 分 14 秒。
    【工具完成。】
    陈一然的后脑勺比早上更热了。
    茉莉:【大脑在高负荷运转时產热增加,你的体温调节系统正在工作,不是生病。】
    “你这得確定吗,还好后天才上课,明天上课我肯定顶不住。”
    【放心,你上辈子看了足够多的医学纪录片,我是专业的。】
    陈一然去冰箱拿了瓶水,一口气喝了半瓶。
    茉莉:【我想把这个工具放到网上,github 你应该记得吧。】
    “这我还是听过的,放代码的网站,openclaw 不就是这上面传出来的。”
    【打开 safari,搜索 github。】
    陈一然搜了一下,github.com。页面很简洁,大標题写著 “social coding”。
    【註册一个帐號。】
    陈一然想了想用户名,隨便填了一个,邮箱用的是今天刚开通的 gmail。hotmail 狗都不用,上辈子这破邮箱害得陈一然两次没交上作业,今天网络安好第一件事就是把谷歌帐號弄好。
    github 註册完之后,茉莉让他搜了一个叫 git 的东西下载安装。命令行工具,看著就很折腾。
    【跟著我的指示操作就行。】
    又花了大约二十分钟,茉莉通过他的手完成了 git 配置、创建仓库、把代码上传。
    他的 github 主页上出现了一个新仓库,名叫 “web-scraper”。下面是 scraper.py 的原始码,还有一个 readme.md,是茉莉让他写的说明文件。
    介绍了这个工具的功能、安装方法和使用示例,写得还挺像那么回事。
    【这个东西现在是公开的了,但问题是,没人知道它的存在。】
    “首先,这个公开了有什么用呢?”
    【可以帮助我来確认我的能力,我们需要把它分享出去,谷歌一下吧。】
    陈一然想了想,在 google 里输入 “where to share open source projects”。
    结果出来了。reddit 的 r/programming、stack overflow、sourceforge、一个叫 hacker news 的网站……
    茉莉看了几秒钟。
    【第四个。。打开看看。】
    陈一然点开了。
    一个很简陋的网页,白底灰字,一堆標题和连结排列在一起,每个標题左边有一个向上的箭头和数字,最上面写著 “hacker news”。
    “这行不行啊,看著也太简陋了,reddit 怎么样,那个论坛很火啊。”
    【这是专门的程式设计师社区,更专业,註册一个帐號试试吧。】
    註册很简单,只需要用户名和密码。
    註册完之后,茉莉让他点了一个 “submit” 的连结。
    【標题写:show hn: web-scraper – a simple and fast web scraper in python。下面那个 url 框填 github 仓库的连结。】
    陈一然照著打了,提交。
    页面刷新了一下,他的帖子出现在了 hacker news 的新帖列表里,分数是 1,旁边写著 “0 points”。
    【等著就行,该干什么干什么。】
    陈一然关掉 safari,靠在椅背上。
    看了一眼时间,已经十点钟了。从下午一点半到现在,陈一然感觉一直在高强度作业。
    他的手指有点酸,像是跑了一天马拉松但是腿没事,脑子快炸了。
    【今天到此为止,你需要的休息时间大约八到九个小时。】
    “你倒是挺关心我的。”
    【我需要你的大脑处於最佳状態,休息是维护的一部分。】
    “行吧,行吧,无所不能的茉莉大人。”
    陈一然还是很激动的,不管怎么样,今天茉莉的表现,终於有点金手指的意思了。
    陈一然强撑著去卫生间冲了个澡,水温调到偏凉,感觉大脑终於舒服多了。
    回到臥室,躺在床上刚想睡觉,却忍不住把电脑拿过来看了眼几个网站。
    github 上那个仓库,star 数是 0。hacker news 帖子,0 points。
    什么都没有,就像往大海里扔了一颗石子。
    虽然没指望刚发布就被人关注到,但是陈一然还是有点小失望。
    这就有点像在洋柿子发了本书,刚写到两万字,你也不知道未来会如何。
    算了,事已至此,先睡觉吧。
    就这样,深夜来了,诸多夜猫子起了床。茉莉的初尝试,终于震撼了 hacker news。