zoukankan      html  css  js  c++  java
  • python 前置,后置正则例子

    本文将实现从CSDN博客获取内容发布至百度博客,分别实践抓取博客内容、模拟登录、表单提交。在下文代码中间逐一阐述。

     

    Python代码 
    1. # -*- coding: utf-8 -*-  
    2. import re  
    3. import urllib  
    4. import urllib2  
    5. import cookielib  
    6.   
    7. #获取CSDN博客标题和正文  
    8. url = "http://blog.csdn.net/[username]/archive/2010/07/05/5712850.aspx"  
    9. sock = urllib.urlopen(url)  
    10. html = sock.read()  
    11. sock.close()  
    12. content = re.findall('(?<=blogstory">).*(?=<p class="right artical)', html, re.S)  
    13. content = re.findall('<script.*>.*</script>(.*)', content[0], re.S)  
    14. title = re.findall('(?<=<title>)(.*)-.* - CSDN.*(?=</title>)', html, re.S)  
    15. #根据上文获取内容新建表单值  
    16. blog = {'spBlogTitle': title[0].decode('utf-8').encode('gbk'), #百度博客标题  
    17.         'spBlogText': content[0].decode('utf-8').encode('gbk'),#百度博客内容  
    18.         'ct'"1",  
    19.         'cm'"1"}  
    20. del content  
    21. del title  
    22.   
    23. #模拟登录  
    24. cj = cookielib.CookieJar()  
    25. #用户名和密码  
    26. post_data = urllib.urlencode({'username''[username]''password''[password]''pwd''1'})  
    27. #登录路径  
    28. path = 'https://passport.baidu.com/?login'  
    29. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))  
    30. opener.addheaders = [('User-agent''Opera/9.23')]  
    31. urllib2.install_opener(opener)  
    32. req = urllib2.Request(path, post_data)  
    33. conn = urllib2.urlopen(req)  
    34.   
    35. #获取百度发布博客的认证令牌  
    36. bd = urllib2.urlopen(urllib2.Request('http://hi.baidu.com/[username]/creat/blog')).read()  
    37. bd = re.findall('(?<=bdstoken\" value=\").*(?=ct)', bd, re.S)  
    38. blog['bdstoken'] = bd[0][:32]  
    39. #设置分类名  
    40. blog['spBlogCatName'] = 'php'  
    41. #比较表单发布博客  
    42. req2 = urllib2.Request('http://hi.baidu.com/[username]/commit', urllib.urlencode(blog))  
    43.   
    44. #查看表单提交后返回内容  
    45. print urllib2.urlopen(req2).read()  
    46.   
    47. #请将[username]/[password]替换为您的真实用户名和密码  
    48. #搞定收工……  
     
    评论

  • 相关阅读:
    java中用spring实现数组类型输出
    #科委外文文献发现系统——导出word模板1.0
    #科委外文文献发现系统——项目管理
    终审项目展示
    M2事后会议报告
    【Beta版本发布】爬虫队长装备全面更新!
    Beta版本测试报告
    Beta阶段爬取数目预估
    团队作业Week14——源代码管理
    Daily Scrum NO.10
  • 原文地址:https://www.cnblogs.com/lexus/p/1851644.html
Copyright © 2011-2022 走看看