urllib2、re、json的综合使用

最近开始使用扇贝背单词,需要将以前积累在有道单词本里的单词导入到扇贝中。然后,扇贝并没有提供生词导入功能,需要使用"批量添加功能"手动添加单词。而批量添加功能一次只能添加十个单词,近千个单词需要添加九十余次。于是想编写一个简单的脚本添加单词。 脚本需要完成的功能:

一、思路

  1. 解析有道单词本,将自己收藏的单词全部抓取下来;
  2. 模拟批量添加功能,将抓取的单词提交到扇贝上。

在解析"批量添加功能"时,发现网页使用Get方法提交一个包括单词和随机字符串的网址。比如

1
http://www.shanbay.com/bdc/vocabulary/add/batch/?words=first&_=1399122494234
。"words="后面是需要添加的单词,"&_="后面是一个随机字条串。这个随机字符串自己一直无法解析。 后来在德问上提问,得知它是用来防止csrf攻击的。cookie里有一个字段叫"csrftoken",是Django框架用来防止csrf攻击生成的一个cookie,服务器会使用这个cookie生成一个随机字符串。 更方便的方法是使用扇贝提供的API来解决。

二、实现思路

  1. 解析单词本

    1.1 登陆有道单词本,首先使用浏览器登陆,复制所有cookie出来,构建一个包含cookie的urllib2.opener,需要库urllib2;

    1.2 提取一页中的单词,添加到一个集合(set)中,需要库re;

    1.3 下一页,直到结束。

  2. 提交单词

    2.1 同样方法构建一个扇贝网的opener;

    2.2 使用api提交集合中的单词;

    2.3 解析返回的json对象,显示提交失败的单词,需要库json。

三、 Prototype

urllib2、re、json的综合使用,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。