• 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
  • 相关阅读:
    算法70----只有两个键的键盘【动态规划】
    Shell
    Shell
    Shell
    Shell
    Shell
    Tools
    Jenkins
    Java
    Product
  • 原文地址:https://www.cnblogs.com/abcat/p/3705599.html
Copyright © 2020-2023  润新知