爬虫问题

1.urlopen参数设置

urlopen(url, data, timeout)


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()



2.代理设置

(1)import urllib2

enable_proxy = True

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

null_proxy_handler = urllib2.ProxyHandler({})

if enable_proxy:

opener = urllib2.build_opener(proxy_handler)

else:

opener = urllib2.build_opener(null_proxy_handler)

urllib2.install_opener(opener)


(2) import urllib2

import time

import re

f = open('logging01', 'w')

proxies = {'http':'http://117.89.152.52:8090'}

for i in range(50):

num = i+1

f.write('page'+str(num)+' ')

while True:

urllib2.ProxyHandler(proxies)

url = 'http://club.jd.com/productpage/p-2121097-s-0-t-3-p-%u.html'%i

response = urllib2.urlopen(url)

content = response.read().decode('GB2312','ignore').encode('utf-8')

title = re.findall('"content":"(.*?)","creationTime":"',content)

if content=='':

time.sleep(10)

if not str(content)=='':

# print title

for j in title:

if 'div' in j:

continue

print j

f.write(str(j)+' ')

break


f.close()

3)假如要设置多个代理,做法

4)这里要注意的一个细节,使用 urllib2.install_opener() 会设置 urllib2 的全局 opener 。这样后面的使用会很方便,但不能做更细粒度的控制,比如想在程序中使用两个不同的 Proxy 设置等。比较好的做法是不使用 install_opener 去更改全局的设置,而只是直接调用 opener open 方法代替全局的 urlopen 方法。

(5)pythonopenerbuild_openenr , urlopen opener open 方法的区别

4.使用 HTTP PUT DELETE 方法


http协议有六种请求方法,get,head,put,delete,post,options,我们有时候需要用到PUT方式或者DELETE方式请求。


PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUTPOST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。

DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazonS3云服务里面就用的这个方法来删除资源。

如果要使用 HTTP PUT DELETE ,只能使用比较低层的 httplib 。虽然如此,我们还是能通过下面的方式,使 urllib2 能够发出 PUT DELETE 的请求,不过用的次数的确是少,在这里提一下。


import urllib2

request = urllib2.Request(uri, data=data)

request.get_method = lambda: 'PUT' # or 'DELETE'

response = urllib2.urlopen(request)


5.爬虫在什么时候会用到异常处理方面的知识呢?

1.urlopen参数设置

urlopen(url, data, timeout)


import urllib

import urllib2

原文地址:https://www.cnblogs.com/flippedkiki/p/6915691.html