模拟登陆豆瓣的程序。

#-*- coding:utf-8-*-

import urllib

import urllib2

import re

import cookielib

import sys

reload (sys)

sys.setdefaultencoding("utf-8")

username = ''

password = ''

cookie = cookielib.CookieJar()

handler = urllib2.HTTPCookieProcessor(cookie)

opener = urllib2.build_opener(handler)

url = 'http://www.douban.com/'

req = urllib2.Request(url)

res = urllib2.urlopen(req)

loginurl = 'https://accounts.douban.com/login'

headers = {"User-Agent":'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'}

data = {

"ck":'93rI',

"source":'None',

"redir":'http://www.douban.com',

"form_email":'username',

"form_password":'password',

"remember":'on'

"login":'登陆'

}

dt = urllib.urlencode(data)

request = urllib2.Request(loginurl,dt,headers)

response = opener.open(request)

page = response.read()

print page

data里面那个中文 “登陆” 我怎么表示。这个程序运行之后显示的是 登陆那个地方无效的语法。

2.在正则中如果我要匹配中文要怎么匹配,把中文转换成utf-8码?中文和这个怎么转换。

3.chrome 开发者工具的问题,我登陆豆瓣的时候能够看到

URL和post表单,但是登陆直呼的时候却找不到,准确来说我就是没在name里找到login这个所以自然找不到post表单。我用火狐可以找到。

再来一个吧,这个是登陆知乎的程序。都大同小异,别人给我改过一次。我自己写的结果是验证码写不要出来。改完之后i是这样的:

# -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding( "utf-8" )

import urllib

import urllib2

import cookielib

import re

#设置账号(Email类型)

username = ''

password = ''

#Cookie

cookie = cookielib.CookieJar()

cookie_handler = urllib2.HTTPCookieProcessor(cookie)

opener = urllib2.build_opener(cookie_handler)

urllib2.install_opener(opener)

#请求首页

url = 'http://www.zhihu.com/'

request = urllib2.Request(url)

res = urllib2.urlopen(request)

contents = res.read().decode('utf-8')

#得到 token

pattern = re.compile(r'',re.S)

result = re.findall(pattern,contents)

xsrf = result[0]

#请求验证码

Captcha_URL= 'http://www.zhihu.com/captcha.gif?r=11111111'

r = urllib2.urlopen(urllib2.Request(Captcha_URL))

#写入文件

with open('code.gif','wb') as f:

f.write(r.read())

#输入 4位的 验证码

captcha =raw_input('captcha: ')

#构造登陆时的数据

lgurl = 'http://www.zhihu.com/login/email'

hdr = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0'}

post_data = {

'_xsrf':xsrf,

'email':username,

'password':password,

'rememberme':'true',

'captcha':captcha

}

#提交登陆

dt = urllib.urlencode(post_data)

req = urllib2.Request(lgurl, dt, hdr)

response = opener.open(req)

page = response.read()

print page

这个代码,有两个不明白的地方一个是获取验证之后那三行

r = urllib2.urlopen(urllib2.Request(Captcha_URL))

写入文件

with open('code.gif','wb') as f:

f.write(r.read())

为什么要打开这个r 还有为什么要写入文件。

其次是,运行之后要输入验证码,我就点开验证码的url每次输入之后显示的结果还是验证码错误。

请大家赐教。感激不尽。把这几个程序弄完之后就开始学习requests和beautiful soup了。还有那些常用的库要学习还请大家跟我说一下。如果大家有好的资源能分享一下就更好了。真的非常谢谢!

pythonurllib的使用_python re和urllib的使用问题。相关推荐

  1. pythonurllib模块-Python3中核心模块urllib的用法大全

    Python的urllib模块提供了一个高级的Web通信库,支持基本的协议,如HTTP.FTP和Gopher,同时也支持对本地文件的访问.在Python3中,urllib.urlparse.urlli ...

  2. pythonurllib模块-Python3学习笔记(urllib模块的使用)

    1.urllib urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=Fa ...

  3. python urlretrieve 管道_Python基础之 urllib模块urlopen()与urlretrieve()的使用方法详解。...

    1.urlopen()方法urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据. 参数 ...

  4. python url拼接_python学习笔记——urllib篇

    1 request模块:用于打开和读取 URL. 使用urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None, capath=None ...

  5. pythonurllib爬虫教学_Python学习教程:这里是Python爬虫的起点,抢占资源啦

    原标题:Python学习教程:这里是Python爬虫的起点,抢占资源啦 今天跟大家出的这篇文章,是从爬虫的起点开始讲起,这里的Python学习教程,一篇文章带你贯穿爬虫始末!之前也够跟大家出过相关的P ...

  6. python爬虫分析模拟登录时会变的参数_Python爬虫之urllib模拟登录及cookie的那点事...

    在web  sprider crawl过程中,许多网站都需要登录后才能访问,一般如果我们不用爬虫框架的前提下,常规用的就两个库 ,urllib库和requests库,本文将用最基础的urllib库,以 ...

  7. python中urllib模块安装_python如何安装urllib

    urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urllib.基本上涵盖了基础的网络请求功能. 该库有四个模块, ...

  8. Python学习笔记——爬虫之urllib数据抓取

    目录 urllib库的基本使用 Get方式 POST方式: 获取AJAX加载的内容 Handler处理器 和 自定义Opener urllib库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资 ...

  9. python爬虫从入门到实战笔记——第一章爬虫原理和数据爬取

    爬虫原理和数据抓取 1.1 通用爬虫和聚焦爬虫 通用爬虫 聚焦爬虫 1.2 HTTP和HTTPS HTTP的请求与响应 浏览器发送HTTP请求的过程: 客户端HTTP请求 请求方法 常用的请求报头 服 ...

最新文章

  1. JVM是怎么工作的?
  2. NuGet是什么?理解与使用(下)
  3. python 二维强度图_荐 python数据分析matplotlib库使用之二维图形绘制
  4. [TODO]com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method
  5. JDBC结合JSP使用(2)
  6. [Linux 性能检测工具]IOSTAT
  7. TCP/IP协议详解内容总结(怒喷一口老血)
  8. python机器学习库sklearn——线性回归
  9. sdk 今日头条_Unity接入今日头条广告(激励广告)
  10. atitit.条形码的原理与生成总结java Barcode4j barcode o5
  11. qt的信号和槽通信机制(当多个窗口之间来回通信[父窗口和子窗口])
  12. java xml转换xsd,将java类转换成xsd文件
  13. iOS Socket 客户端 基本使用
  14. 小迪外卖小程序源码+后台_外卖cps 赚钱小程序源码
  15. 审计工作存在的难点和问题_审计工作中存在的问题及解决办法
  16. python常见容器操作:字符串的增删改查循环、列表的增删改查循环、元组的查循环、字典的的增删改查循环等常规操作
  17. 手机端滑动banner代码
  18. phpsocket客户端以及服务器例子
  19. html画布实现小球沿直线下落,js+html5实现的自由落体运动效果代码
  20. Elastic:Elastic Stack 8.0.0-alpha1 发布

热门文章

  1. [C指针] 用图表解读C声明:Unscrambling C Declarations by Diagram
  2. thymeleaf随机数_SpringBoot2.0实现静态资源版本控制
  3. javaWEB的三大组件(入门基础总结)
  4. php 手机端播放器,用JS代码适配电脑端和手机端播放器代码
  5. php 嵌入手机百度地图,C# 程序中嵌入百度地图
  6. c语言学习进阶-C语言程序出错处理
  7. 使用Addressable更好的管理内存
  8. 微信视频号Android面试经验,如何通过视频面试拿下offer?我们来给你支招啦!
  9. 使用LazZiya.ExpressLocalization开发多区域性ASP.NET Core 3、2、1项目
  10. Android 11 将推出系统试用功能,满意后再正式安装