Python爬虫常用函数说明

1.urllib2.urlopen(url,data,timeout)

第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。

第二三个参数是可以不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT

2.import urllib2

request=urllib2.Request(url)

response=urllib2.urlopen('request')

print response.read()

构造response使得逻辑上更加清晰。

3.post和get区别:

 HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。因此GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

具体区别见:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

使用post方式模拟登陆:

import urllib

import urllib2

values ={"username":"name","password":"password"}

data=urllib.urlencode(values)

url='http://xxxxx'

request=urllib2.Request(url,data)

response=urllib2.urlopen(request)

print response.read()

 使用get方式模拟登陆:

import urllib

import urllib2

values={}

values['username']='name'

values['password']='password'

data=urllib.urlencode(values)

url='http://xxxxx'

geturl=url+'?'+data

request=urllib2.Request(geturl)

response=urllib2.urlopen(request)

print response.read()

 在请求中设置headers:

import urllib
import urllib2

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 = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' ,
'Referer':'http://www.zhihu.com/articles' }传入上面request中的headers

 备注:headers中其他内容及含义:

User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
application/json : 在 JSON RPC 调用时使用
application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用
在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务

 3.urllib2使用环境变量http_proxy来设置HTTP Proxy。

import urllib2

enable_proxy=true

proxy_handler=urllib2.ProxyHandler({'http://some-proxy.com:8080'})

null_proxy_handler=urllib2.ProxyHandler({})

if enable_proxy:

  opener=urllib2.build_opener(proxy_handler)

else:

  opener=urllib2.build_open(null_proxy_handler)

urllib2.install_opener(opener)

原文地址:https://www.cnblogs.com/buzhidaojiaoshenmoleya/p/6984495.html