# -*- coding: utf-8 -*-
import urllib2
import urllib
#最简单的网页内容抓取
request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()
#post方式发送请求 (在URL中看不到参数值)
value = {'txtuUerName':'2017140845','txtPassword':'304118'}
data = urllib.urlencode(value) #对参数进行编码
url = 'http://ecard.bupt.edu.cn/login.aspx'
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print response.read()
#get方式发送请求(在URL地址中直接看到参数值)
values={}
values['username'] = "1016903103@qq.com"
values['password']="XXXX"
data = urllib.urlencode(values)
url = "http://passport.csdn.net/account/login"
geturl = url + "?"+data
request = urllib2.Request(geturl)
response = urllib2.urlopen(request)
print response.read()
#为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性。
#agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以可以在headers中设置agent
#此处只是演示格式
url = 'http://www.server.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'username' : 'cqc', 'password' : 'XXXX' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
page = response.read()
#我们还有对付”反盗链”的方式,对付防盗链,服务器会识别headers中的referer是不是它自己,如果不是,有的服务器不会响应,
#所以我们还可以在headers中加入referer
#例如我们可以构建下面的headers
headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)','Referer':'http://www.zhihu.com/articles' }
其他的有必要的可以审查浏览器的headers内容,在构建时写入同样的数据即可。
#如果我们需要用到Cookie,只用默认opener是不能达到目的的
#cookielib模块的主要作用是提供可存储cookie的对象
#利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能
import cookielib
#声明一个CookieJar对象实例来保存cookie
cookie = cookielib.CookieJar()
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#此处的open方法同urllib2的urlopen方法,也可以传入request
response = opener.open('http://www.baidu.com')
for item in cookie:
print 'Name = '+item.name
print 'Value = '+item.value
#如果我们想将cookie保存到文件中,这时我们就要用到FileCookieJar这个对象了,
#在这里我们使用它的子类MozillaCookieJar来实现Cookie的保存
import cookielib
#设置保存cookie的文件,同级目录下的cookie.txt
filename = 'cookie.txt'
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#创建一个请求,原理同urllib2的urlopen
response = opener.open("http://www.baidu.com")
#保存cookie到文件
cookie.save(ignore_discard=True, ignore_expires=True)
#利用cookie模拟网站登录,登录我的迎新网站,成功!
import urllib2
import cookielib
filename = 'cookie.txt'
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
postdata = urllib.urlencode({
'username':'2017****',
'password':'11*****'
})
#登录研究生系统的URL
loginUrl = 'https://auth.bupt.edu.cn/authserver/login?service=http%3a%2f%2fwelcome.bupt.edu.cn%2findex.portal'
#模拟登录,并把cookie保存到变量
result = opener.open(loginUrl,postdata)
#保存cookie到cookie.txt中
cookie.save(ignore_discard=True, ignore_expires=True)
#利用cookie请求访问另一个网址,
gradeUrl = 'http://welcome.bupt.edu.cn/index.portal?.pn=p21542'
#请求访问
result = opener.open(gradeUrl)
print result.read()