urllib2、re、json的综合使用

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

一、思路

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

在解析"批量添加功能"时,发现网页使用Get方法提交一个包括单词和随机字符串的网址。比如```javascript
http://www.shanbay.com/bdc/vocabulary/add/batch/?words=first&_=1399122494234

。"words="后面是需要添加的单词,"&_="后面是一个随机字条串。这个随机字符串自己一直无法解析。
后来在[德问](http://www.dewen.org/q/16620/%E5%A6%82%E4%BD%95%E5%88%86%E6%9E%90%E4%B8%80%E4%B8%AA%E7%BD%91%E7%AB%99%E7%9A%84Javascript%E7%9A%84%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B%3F)上提问,得知它是用来防止csrf攻击的。cookie里有一个字段叫"csrftoken",是Django框架用来防止csrf攻击生成的一个cookie,服务器会使用这个cookie生成一个随机字符串。
更方便的方法是使用扇贝提供的[API](http://www.shanbay.com/help/developer/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
原文地址:https://www.cnblogs.com/abcat/p/3705599.html