<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.7.3">Jekyll</generator><link href="https://dlsong.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://dlsong.com/" rel="alternate" type="text/html" /><updated>2018-05-04T13:43:38+00:00</updated><id>https://dlsong.com/</id><title type="html">看什么看，学习去！</title><subtitle>作者记性太差，用这个来记录一下课余时间做的小项目，看过的好书，去过的好玩的地方和吃过的好东西</subtitle><author><name>C.Z Song</name></author><entry><title type="html">使用Python自动抓取更新的小说，并发送到Instapaper上</title><link href="https://dlsong.com/tech/fetch_novel/" rel="alternate" type="text/html" title="使用Python自动抓取更新的小说，并发送到Instapaper上" /><published>2018-01-07T00:00:00+00:00</published><updated>2018-01-07T00:00:00+00:00</updated><id>https://dlsong.com/tech/fetch_novel</id><content type="html" xml:base="https://dlsong.com/tech/fetch_novel/">&lt;hr /&gt;
&lt;p&gt;一直比较喜欢看小说，可是自从几年前我的起点账号莫名其妙的被人盗了然后还无法找回之后就放弃了起点。
最近在用&lt;a href=&quot;http://www.piaotian.com/&quot;&gt;飘天文学&lt;/a&gt;在看，可是问题就是更新的时候没有办法像起点那样给我提醒。
所以只能时不时地用刷网页看看有没有更新。
另一点就是伦敦地铁里没有信号，像我这样每天需要一个小时通勤的人在地铁里只能每次到站的时候快速连一下wifi，上个网。
直到我遇到了&lt;a href=&quot;https://www.instapaper.com/&quot;&gt;Instapaper&lt;/a&gt;。&lt;/p&gt;

&lt;h2 id=&quot;instapaper&quot;&gt;Instapaper&lt;/h2&gt;
&lt;p&gt;Instapaper 可以把想要看的网页保存下来，稍后阅读。
对于我来说就成为了一个菜谱，教程的集散地。
经常性的看到一些让我心动的教程，我就把它们保存到Instapaper里面。
相对于Pocket，Instapaper是免费的。&lt;/p&gt;

&lt;p&gt;用着Instapaper的时候我就在想如果能把小说自动放进来就好了，这样即使没有网络我也可以看小说。&lt;/p&gt;

&lt;h2 id=&quot;python-抓取小说&quot;&gt;Python 抓取小说&lt;/h2&gt;
&lt;p&gt;之前看了些爬虫的教程，感觉这个可以帮助我实现这一简单的目标。
实际上这里的东西并没有爬虫那么复杂，不需要每个链接都过一遍。
因为我使用的是飘天文学，所以网址的结构是&lt;/p&gt;
&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;http://www.piaotian.com/bookinfo/小说代码.html
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;小说代码在novel_url这个变量里。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;在这里我用了pickle来储存每次抓取的结果。用来和下一次抓取的结果做比较来找出最新更新的章节网址。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;如果是第一次运行，代码会查看是否有&lt;code class=&quot;highlighter-rouge&quot;&gt;url.pkl&lt;/code&gt;这个文件存在，如果不存在的话就把&lt;code class=&quot;highlighter-rouge&quot;&gt;last_url&lt;/code&gt;这个变量设为empty list。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;之后就是一个简单的&lt;code class=&quot;highlighter-rouge&quot;&gt;for loop&lt;/code&gt;，因为我在同时追四本小说，所以就要抓取每本小说。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;对比之前抓取的结果，多出来的就是最新更新的章节，把这些章节发送到instapaper里面。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;设定让这个程序每20分钟运行一次。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;下面的代码就是实现抓取最新章节的网址：&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;requests&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;re&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os.path&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;pickle&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;bs4&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;BeautifulSoup&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;instapaperlib&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Instapaper&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;apscheduler.schedulers.blocking&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;BlockingScheduler&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# 想要抓取的小说名和小说在飘天网网址里的代码&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;novel_list&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;一念永恒&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;道君&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;带着仓库到大明&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;圣墟&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;novel_url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'7/7981'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'8/8491'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'8/8472'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'8/8253'&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;fetch_novel&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;novel_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;novel_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'job running'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;c&quot;&gt;# 检查是否存在url.pkl文件，如果不存在就把last_url设为emtpy list。 如果存在就把其中保存的内容是为last_url&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isfile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'url.pkl'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'url.pkl'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;last_url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pickle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;last_url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[[],[],[],[]]&lt;/span&gt;
    &lt;span class=&quot;c&quot;&gt;# 使用instapaper的API 登陆instapaper&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;ins&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Instapaper&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;username&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;ins&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;auth&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;url_archive&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;novel_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)):&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;## 检测最新章节地址&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# 小说网页&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;old_url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;last_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'http://www.piaotian.com/bookinfo/'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;novel_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'.html'&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;head&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{}&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# 使用代理&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'User-Agent'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19'&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# 创建request对象&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;page&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;requests&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# 通过BeautifulSoup分析&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;soup&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;BeautifulSoup&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;page&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'lxml'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# 找出最新章节的div&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;soup_text&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;soup&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;find_all&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;re&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;compile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;novel_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;re&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;compile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# 保存章节的地址和章节名&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;latest_url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;latest_title&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;soup_text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)):&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;latest_url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;soup_text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'href'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;latest_title&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;novel_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'---'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;soup_text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'title'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'utf-8'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# 对比上次抓取的章节地址和这次抓取的，把新更新的章节地址发送到instapaper上&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;latest_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)):&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;latest_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;old_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;k&quot;&gt;pass&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;latest_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;latest_title&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
                &lt;span class=&quot;n&quot;&gt;ins&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add_item&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;latest_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;latest_title&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;old_url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;latest_url&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;url_archive&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;old_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;novel_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
    &lt;span class=&quot;c&quot;&gt;# 把这次抓取的信息保存到url.pkl里面，以便下次抓取的时候使用&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'url.pkl'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'w'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;pickle&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dump&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;url_archive&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# 让上面的function每20分钟运行一次&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;scheduler&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;BlockingScheduler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;scheduler&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;add_job&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fetch_novel&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'interval'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;minutes&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;novel_list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;novel_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timezone&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Europe/London&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;scheduler&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;使用docker在家庭服务器上运行&quot;&gt;使用docker在家庭服务器上运行&lt;/h2&gt;
&lt;p&gt;然后就是在我的家庭服务器上运行这个抓取程序。
像nextcloud一样，我用docker来运行这个程序。&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;首先新建一个文件夹，在这里命名为fetch_novel&lt;/li&gt;
  &lt;li&gt;把上面的script保存为xiaoshuo.py，并且保存在fetch_novel文件夹里&lt;/li&gt;
  &lt;li&gt;在这个文件夹里创建Dockerfile并将以下代码复制进去：
    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;FROM python:2
RUN mkdir /usr/src/novel
WORKDIR /usr/src/novel
COPY . /usr/src/novel
RUN pip install -r requirements.txt
CMD [&quot;python2.7&quot;, &quot;xiaoshuo.py&quot;]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;在同样的文件夹里创建&lt;code class=&quot;highlighter-rouge&quot;&gt;requirements.txt&lt;/code&gt; 写下python代码需要的package：
    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;requests
Lxml
bs4
BeautifulSoup
Instapaper
instapaperlib
apscheduler
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;最后，在这个文件夹里创建&lt;code class=&quot;highlighter-rouge&quot;&gt;docker-compose.yml&lt;/code&gt; 写下以下：
    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;version: '2'
services:
  novel:
    container_name: fetch_novel
    build: .
    volumes:
      - /host/folder:/usr/src/novel
    restart: always
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
    &lt;p&gt;其中&lt;code class=&quot;highlighter-rouge&quot;&gt;/host/folder&lt;/code&gt; 是你主机里面的文件夹，可以把docker里面的/usr/src/novel文件夹map到/host/folder。这样可以对其进行更改。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;最后最后，在这个文件夹下开启terminal， 在里面输入&lt;code class=&quot;highlighter-rouge&quot;&gt;docker-compose up -d&lt;/code&gt;来建立并启动这个docker image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如此就可以让这个程序每20分钟查看一下有没有更新的小说章节，如果有的话就推送到自己的instapaper账号。
如果喜欢的话，可以用ifttt设置一下，在instapaper每次保存新项目的时候让ifttt发送提醒。&lt;/p&gt;</content><author><name>C.Z Song</name></author><category term="tech" /><category term="python" /><category term="instapaper" /><summary type="html">使用Python自动抓取更新的小说，并发送到Instapaper上</summary></entry><entry><title type="html">使用jekyll和GitHub Pages搭建静态网页</title><link href="https://dlsong.com/tech/jekyll/" rel="alternate" type="text/html" title="使用jekyll和GitHub Pages搭建静态网页" /><published>2018-01-01T00:00:00+00:00</published><updated>2018-01-01T00:00:00+00:00</updated><id>https://dlsong.com/tech/jekyll</id><content type="html" xml:base="https://dlsong.com/tech/jekyll/">&lt;hr /&gt;
&lt;p&gt;前几天在搜索iPad Pro学习软件的时候找到了&lt;a href=&quot;http://frankorz.com/&quot;&gt;萤火之森&lt;/a&gt;, 挺喜欢这个网站的。
看到最下面写着Hexo 驱动，于是乎就顺藤摸瓜开始了解这些了。
最后发现了GitHub Pages可以免费host静态网页，配合着jekyll可以基本上满足我的需求了。
在jekyll的众多&lt;a href=&quot;http://jekyllthemes.org/&quot;&gt;主题&lt;/a&gt;中看好了现在使用的这个&lt;a href=&quot;https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/&quot;&gt;Minimal Mistakes&lt;/a&gt;。
于是乎就照着教程开始搭建了。&lt;/p&gt;

&lt;h2 id=&quot;注册github和安装github-desktop&quot;&gt;注册GitHub和安装GitHub Desktop&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;首先需要注册一个GitHub账户，&lt;a href=&quot;https://github.com/join&quot;&gt;点这里&lt;/a&gt;。注册好了之后就要创建一个新的repository。&lt;/li&gt;
  &lt;li&gt;之后就要下载&lt;a href=&quot;https://desktop.github.com/&quot;&gt;GitHub Desktop&lt;/a&gt;并且安装。 按照自己刚才注册的GitHub信息填写&lt;/li&gt;
  &lt;li&gt;Clone repository，选择本地的文件夹。这样就可以在本地对文件进行修改，测试网页，觉得OK后再发布到GitHub上&lt;/li&gt;
  &lt;li&gt;如果需要一个GitHub账户host几个网站的话，就需要新建立一个gh-pages分支，而不是用master分支
    &lt;ul&gt;
      &lt;li&gt;首先打开terminal（我用的是Mac，其他系统可以用相应的程序）&lt;/li&gt;
      &lt;li&gt;输入 &lt;code class=&quot;highlighter-rouge&quot;&gt;git checkout --orphan gh-pages&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;然后去GitHub网站，点击你的repository，进入Settings，在左面的菜单里找到Branches，选择gh-pages作为Default branch&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;如果你的GitHub账户只host一个网站的话就不需要创建gp-pages分支&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;寻找并安装网页主题&quot;&gt;寻找并安装网页主题&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;找到自己喜欢的Jekyll网页主题，并且下载下来，解压缩之后把里面文件都放到GitHub 本地的repo文件夹里&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;安装jekyll并开启本地服务&quot;&gt;安装Jekyll并开启本地服务&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;打开terminal，进入到repo文件夹里：&lt;code class=&quot;highlighter-rouge&quot;&gt;cd /Documents/GitHub/&quot;repo name&quot;/&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;检查是否有Ruby 2.1.0 以上版本：&lt;code class=&quot;highlighter-rouge&quot;&gt;ruby -v&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;如果没有Ruby的话可以参考&lt;a href=&quot;https://www.ruby-lang.org/zh_cn/documentation/installation/&quot;&gt;这个链接&lt;/a&gt;安装ruby&lt;/li&gt;
  &lt;li&gt;然后安装Bundler： &lt;code class=&quot;highlighter-rouge&quot;&gt;gem install bundler&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;上一步找到的主题文件里面应该已经包含有了Gemfile 文件。如果将来需要安装什么Jekyll的插件，可以在这个文件里加入：gem “plugin_name”。&lt;/li&gt;
  &lt;li&gt;然后安装Jekyll：&lt;code class=&quot;highlighter-rouge&quot;&gt;bundle install&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;生成网页&quot;&gt;生成网页&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;在repo文件夹里运行：&lt;code class=&quot;highlighter-rouge&quot;&gt;bundle exec jekyll serve&lt;/code&gt; 来在本地生成你的网页。&lt;/li&gt;
  &lt;li&gt;可以在浏览器里输入 &lt;code class=&quot;highlighter-rouge&quot;&gt;localhost:4000&lt;/code&gt; 浏览网页。&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;配置网页&quot;&gt;配置网页&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;具体的网站信息可以在_config.yml进行更改，博客要以“2018-01-02-title.md”的形式放在_posts文件夹里面。更多信息可以参考Minial Mistakes 网站的Quick start guide&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;上传github&quot;&gt;上传GitHub&lt;/h2&gt;
&lt;p&gt;当网站在本地经过检查一切就绪的时候，我们就可以把它放到GitHub上去了。&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;打开GitHub Desktop， 填写Summary和Description，然后就可以Commit to gh-pages&lt;/li&gt;
  &lt;li&gt;然后点击Push origin，大功告成。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;等待几十秒，就可以刷新你的网页了， 地址是username.github.io/reponame&lt;/p&gt;

&lt;h2 id=&quot;使用自己的域名&quot;&gt;使用自己的域名&lt;/h2&gt;
&lt;p&gt;很多时候，我们都想使用自己的域名，实现这个也很简单。&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;前往域名管理网站，找到管理DNS选项&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;按照表格设定你的DNS并保存&lt;/p&gt;

    &lt;table&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;数值&lt;/th&gt;
          &lt;th&gt;TTL&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;A&lt;/td&gt;
          &lt;td&gt;@&lt;/td&gt;
          &lt;td&gt;192.30.252.153&lt;/td&gt;
          &lt;td&gt;1小时&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;A&lt;/td&gt;
          &lt;td&gt;@&lt;/td&gt;
          &lt;td&gt;192.30.252.154&lt;/td&gt;
          &lt;td&gt;1小时&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;CNAME&lt;/td&gt;
          &lt;td&gt;www&lt;/td&gt;
          &lt;td&gt;username.github.io&lt;/td&gt;
          &lt;td&gt;1小时&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/li&gt;
  &lt;li&gt;然后在你的repo下建立一个CNAME， 里面写上你的域名&lt;/li&gt;
  &lt;li&gt;最后去GitHub网站，你的repo，选择设定，找到GitHub Pages选项，在来源选项选gh-pages branch， 在自定义域名选项填上你的域名&lt;/li&gt;
&lt;/ul&gt;</content><author><name>C.Z Song</name></author><category term="tech" /><category term="website" /><category term="jekyll" /><summary type="html">前几天在搜索iPad Pro学习软件的时候找到了萤火之森, 挺喜欢这个网站的。 看到最下面写着Hexo 驱动，于是乎就顺藤摸瓜开始了解这些了。 最后发现了GitHub Pages可以免费host静态网页，配合着jekyll可以基本上满足我的需求了。</summary></entry><entry><title type="html">冰岛，冰雪童话</title><link href="https://dlsong.com/travel/iceland/" rel="alternate" type="text/html" title="冰岛，冰雪童话" /><published>2017-12-30T00:00:00+00:00</published><updated>2017-12-30T00:00:00+00:00</updated><id>https://dlsong.com/travel/iceland</id><content type="html" xml:base="https://dlsong.com/travel/iceland/">&lt;p&gt;去年圣诞， 我们终于踏上了我们期待已久的冰岛，至今都难忘那美丽的景色和一天都泡在Blue Lagoon 温泉的舒适。
来英国之后就开始计划去冰岛，但是由于种种原因一直无法实现。
冰岛这个国家很神奇，那么少的人口，创造出了&lt;a href=&quot;https://www.eveonline.com/&quot;&gt;EVE&lt;/a&gt;，可以让我们体验一下星际迷航中所说的“Boldly go where no man has gone before”。
再加上传说中的极光和美丽的风景，让我神往已久。&lt;/p&gt;

&lt;p&gt;经过了几天的网上搜索，最后确定了在冰岛南部自驾游。
本来打算是环岛游的，但是考虑到天气因素，怕北部风雪太大耽误行程，就把行程全部安排到了南部。&lt;/p&gt;

&lt;h2 id=&quot;行程--google-map&quot;&gt;行程 @ Google Map&lt;/h2&gt;
&lt;p&gt;这个是我当时做的google map，记录了每天的行程和景点。
以防地图无法显示，我把每天的行程截图放在了后面的具体介绍里面。&lt;/p&gt;
&lt;iframe src=&quot;https://www.google.com/maps/d/embed?mid=1eXI28zked22_Yy7to7HXrnq2GAo&quot; width=&quot;640&quot; height=&quot;480&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;第一天赶路&quot;&gt;第一天：赶路&lt;/h2&gt;
&lt;p&gt;我们是中午到达冰岛的，朋友是下午2点左右到达冰岛的。
大家碰头之后就坐机场的摆渡车去了租车公司取车。
这里需要注意的是只有两三家租车公司在冰岛机场航站楼里有柜台，其他的公司都是在机场旁边。
摆渡车可以送大家过去，按照车里的提示找到自己的租车公司所在的站点下车就可。
之后我们就驱车前往我们第一晚的驻地—Vestri Pétursey。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/iceland/day1.png&quot; alt=&quot;day1_route&quot; /&gt;&lt;/p&gt;

&lt;p&gt;我们在路上找了个超市，囤了点吃的喝的。
我们比较喜欢这种cottage，所以住的地方很多都是前不着地后不着村的。&lt;/p&gt;

&lt;h2 id=&quot;第二天冰洞&quot;&gt;第二天：冰洞&lt;/h2&gt;
&lt;p&gt;第二天的主题是冰洞。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/iceland/day2.png&quot; alt=&quot;day2_route&quot; /&gt;&lt;/p&gt;

&lt;p&gt;我们是提前在&lt;a href=&quot;https://guidetoiceland.is/&quot;&gt;Guide to Iceland&lt;/a&gt;上定好的票的，然后在早上起床后开车前往瓦纳特蓝冰洞。
集合点是那里的一个咖啡厅，旁边就有一些蓝色的小冰山浮在水上，可以趁天亮拍一些照片。
他们用雪地车把我们载到比较安全的地方，然后分发安全帽和钉鞋。
之后就跟着向导爬山到达冰洞的地方。
冰洞的大小感觉是靠运气，有时候他们能发现比较大的冰洞，有时候就只有比较小的。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/iceland/day2_1.jpg&quot; alt=&quot;bingdong1&quot; /&gt;
小心翼翼地下冰洞&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/iceland/day2_2.jpg&quot; alt=&quot;bingdong2&quot; /&gt;
从冰洞里面看外面&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/iceland/day2_3.jpg&quot; alt=&quot;bingdong2&quot; /&gt;
冰洞里的小路&lt;/p&gt;

&lt;p&gt;之后我们就往回走，前往当晚的驻地。&lt;/p&gt;

&lt;h2 id=&quot;第三天黑沙滩和瀑布们&quot;&gt;第三天：黑沙滩和瀑布们&lt;/h2&gt;
&lt;p&gt;第三天的主题就是黑沙滩和瀑布。基本上就是沿着前两天的路往回开。
&lt;img src=&quot;/assets/images/iceland/day3.png&quot; alt=&quot;day3_route&quot; /&gt;&lt;/p&gt;

&lt;p&gt;黑沙滩在Vik周围，刚到达的时候大学加狂风，但是等了一会，阳光就从乌云的缝隙中倾洒下来。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/iceland/day3_1.jpg&quot; alt=&quot;blackbeach1&quot; /&gt;
这个时候天放晴了，海水的泡沫留在黑沙滩上，黑白分明&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/iceland/day3_3.jpg&quot; alt=&quot;blackbeach3&quot; /&gt;
专业人士是不惧任何困难与冰冷的海水的&lt;/p&gt;
&lt;video width=&quot;640&quot; height=&quot;480&quot; controls=&quot;&quot;&gt;
  &lt;source src=&quot;/assets/images/iceland/day3_4.mp4&quot; type=&quot;video/mp4&quot; /&gt;
&lt;/video&gt;
&lt;p&gt;用iPhone延时拍的，当时感受还是很震撼的。&lt;/p&gt;

&lt;p&gt;之后我们就继续Road Trip，路上又路过了斯科加树林瀑布
还没看到瀑布的时候就已经可以听到水声了。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/iceland/day3_5.jpg&quot; alt=&quot;skoga1&quot; /&gt;
当时已经快4点了，所以天比较暗了&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/iceland/day3_6.jpg&quot; alt=&quot;skoga2&quot; /&gt;
水流还是长曝好看&lt;/p&gt;

&lt;p&gt;回程的路上最后一个景点是塞里雅兰瀑布。
不过由于时间问题，天都快要黑了，所以就在车里远观了一下。&lt;/p&gt;

&lt;p&gt;第三天晚上我们住在Selfoss周围，Selfoss属于黄金三角的路线上。所以比较前几天的地方都稍微繁华些。&lt;/p&gt;

&lt;p&gt;像我这样的吃货到现在都没有说哪家餐厅好吃是有原因的。
前几天都因为住的地方离周围城镇比较远，所以就随便找了个地方吃了点。
但是这一天在Selfoss就不得不说吃过的这家餐厅了—-&lt;a href=&quot;http://www.tryggvaskali.is/&quot;&gt;Tryggvaskáli&lt;/a&gt;。
发现它也是偶然，从Google map上搜到这家评分还挺高的，于是就定了位置晚上跑了过去。
在点好菜开始吃餐前的面包时就被面包的口感和味道惊叹道，配上它们家的黄油吃的我都不想吃剩下的菜了。
头餐的龙虾汤也很好喝。
最后我们几个人一致决定走的时候再点一个面包外带当第二天早餐。&lt;/p&gt;

&lt;h2 id=&quot;未完待续&quot;&gt;未完待续&lt;/h2&gt;</content><author><name>C.Z Song</name></author><category term="travel" /><category term="EU" /><category term="Iceland" /><summary type="html">去年圣诞， 我们终于踏上了我们期待已久的冰岛， 至今都难忘那美丽的景色和一天都泡在Blue Lagoon 温泉的舒适。</summary></entry><entry><title type="html">The ARAKI – 位于伦敦的米其林三星寿司店</title><link href="https://dlsong.com/foods/araki/" rel="alternate" type="text/html" title="The ARAKI -- 位于伦敦的米其林三星寿司店" /><published>2017-12-30T00:00:00+00:00</published><updated>2017-12-30T00:00:00+00:00</updated><id>https://dlsong.com/foods/araki</id><content type="html" xml:base="https://dlsong.com/foods/araki/">&lt;hr /&gt;

&lt;p&gt;三年前， Araki为了照顾来英国读书的女儿关闭了位于东京的米其林三星餐厅，举家来到了伦敦，在Savile Row附近重新开启了他的事业。
这家餐厅于2015年荣获米其林二星， 并与今年重回三星顶峰。
我和内人2015年的时候有幸享受到这如艺术品般的美食。&lt;/p&gt;

&lt;p&gt;Araki师傅:
&lt;img src=&quot;/assets/images/araki/IMG_2078.jpg&quot; alt=&quot;Araki&quot; /&gt;&lt;/p&gt;

&lt;p&gt;这家餐厅每周二至周日营业，每天只接带两波客人，寿司台只能容下10位客人，价格为£300（不含酒水，不含服务费）。
Araki师傅在寿司台前现场为每一位客人准备食物，每一道菜都会给客人进行讲解。
我们惊叹于Araki师傅那如同舞台表演般的技艺，更加沉迷于那不可自拔的美食。
说实话，我并不是很喜欢吃生鱼，不喜欢那种口感。
但是从我舌头接触到Araki师傅准备的美食之后，我就知道我深深地爱上了这家餐厅。&lt;/p&gt;

&lt;p&gt;废话少说，直接上图：&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/araki/IMG_2075.jpg&quot; alt=&quot;dish1&quot; /&gt;
时间太久远，记不住这道菜是什么了&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/araki/IMG_2076.jpg&quot; alt=&quot;dish2&quot; /&gt;
这个我记得是鲍鱼&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/araki/IMG_2077.jpg&quot; alt=&quot;dish3&quot; /&gt;
金枪鱼和白松露&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/araki/IMG_2079.jpg&quot; alt=&quot;Araki2&quot; /&gt;
Araki师傅在做寿司&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/araki/IMG_2081.jpg&quot; alt=&quot;dish4&quot; /&gt;
银鳕鱼&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/araki/IMG_2082.jpg&quot; alt=&quot;dish5&quot; /&gt;
金枪鱼寿司&lt;/p&gt;

&lt;p&gt;虽然价格看起来比较高，但是我认为物超所值。
这个用餐体验从进入餐厅开始到结束后离开餐厅都是无与伦比的。
我还记得Araki师傅会送每一位客人离开餐厅然后在餐厅门口鞠躬直到客人离开餐厅所在的街区。
这种感受是震撼地，让人不得不敬佩Araki师傅。&lt;/p&gt;

&lt;p&gt;爱吃的朋友一定不要错过这家。
我现在正在努力在学校做兼职助教以期可以早日再去大饱口福。&lt;/p&gt;

&lt;h2 id=&quot;the-araki&quot;&gt;&lt;a href=&quot;http://www.the-araki.com/&quot;&gt;The Araki&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;12 New Burlington Street&lt;br /&gt;
London W1S 3BH&lt;br /&gt;
United Kingdom&lt;br /&gt;
Telephone: +44(0)20 7287 2481&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.google.com/maps/place/araki+london/&quot;&gt;&lt;img src=&quot;https://maps.googleapis.com/maps/api/staticmap?center=araki+london&amp;amp;zoom=15&amp;amp;scale=false&amp;amp;size=600x300&amp;amp;maptype=roadmap&amp;amp;format=png&amp;amp;visual_refresh=true&amp;amp;markers=size:mid%7Ccolor:0xff0000%7Clabel:%7CThe+Araki+London&quot; alt=&quot;Google Map of araki london&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content><author><name>C.Z Song</name></author><category term="foods" /><category term="restaurant" /><category term="sushi" /><summary type="html">三年前， Araki为了照顾来英国读书的女儿关闭了位于东京的米其林三星餐厅，举家来到了伦敦，在Savile Row附近重新开启了他的事业。 这家餐厅于2015年荣获米其林二星， 并与今年重回三星顶峰。</summary></entry></feed>