• 爬虫问题


    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

  • 相关阅读:
    基于jQuery的自定义插件:实现整屏分页转换的功能
    蝶恋花
    js中面向对象编程
    移动端web页面列表类上拉加载,查看详情,iframe嵌套第三方页面遇到的问题以及解决办法
    控制使用jquery load()方法载入新页面中的元素
    bootstrap-daterangepicker双日历控件开始日期选择问题
    点击select下拉框获取option的属性值
    bootstrap table表格前台分页,点击tab选项,重新刷新表格
    jquery中使元素显示和隐藏方法之间的区别
    jquery对象和DOM对象的相互转换
  • 原文地址:https://www.cnblogs.com/flippedkiki/p/6915691.html
Copyright © 2020-2023  润新知