zoukankan      html  css  js  c++  java
  • urllib2的基本使用

    urlopen

      1 import urllib2
      2 
      3 # 向指定的url发送请求,并返回服务器响应的类文件对象
      4 response = urllib2.urlopen("http://www.baidu.com/")
      5 
      6 # 类文件对象支持文件的操作方法,如read()方法返回为字符串 
      7 html = response.read()
      8 
      9 print htm

    上面代码就是打开百度主页的“查看源代码”的内容,还是比较简单的。

    Request

    在上个例子里,urlopen()的参数就是一个url地址;

    但是如果需要执行更复杂的操作,比如增加HTTP报头,必须创建一个 Request 实例来作为urlopen()的参数;而需要访问的url地址则作为 Request 实例的参数。

      1 # -*- coding:utf-8 -*-
      2 import urllib2
      3 
      4 url = "http://www.baidu.com/"
      5 
      6 # url 作为Request()方法的一个参数,并构造一个Request对象
      7 request = urllib2.Request(url)
      8 
      9 # Request对象作为urlopen()方法的参数,发给服务器响应
     10 response = urllib2.urlopen(request)
     11 
     12 html = response.read()
     13 
     14 print html

    与上面的运行时一样的

    新建Request实例,除了必须要有 url 参数之外,还可以设置另外两个参数:

    1. data(默认空):是伴随 url 提交的数据(比如要post的数据),同时 HTTP 请求将从 "GET"方式 改为 "POST"方式。

    2. headers(默认空):是一个字典,包含了需要发送的HTTP报头的键值对。

    User-Agent

    爬虫需要伪装自己,伪装成公认的浏览器

      1 # -*- coding:utf-8 -*-
      2 import urllib2
      3 
      4 url = "http://www.baidu.com/"
      5 headers = {"User-Agent" : "Mozilla/5.0(compatible;MSIE9.0;Windows NT6.1;Trident/5.0)"}
      6 
      7 
      8 # url和headers一起 作为Request()方法的参数,并构造一个Request对象
      9 request = urllib2.Request(url, headers=headers)
     10 
     11 # Request对象作为urlopen()方法的参数,发给服务器响应
     12 response = urllib2.urlopen(request)
     13 
     14 html = response.read()
     15 
     16 print html

    添加更多的Header信息

    特定的header

      1 # -*- coding:utf-8 -*-
      2 import urllib2
      3 
      4 url = "http://www.baidu.com/"
      5 headers = {"User-Agent" : "Mozilla/5.0(compatible;MSIE9.0;Windows NT6.1;Trident/5.0)"}
      6 
      7 
      8 # url和headers一起 作为Request()方法的参数,并构造一个Request对象
      9 request = urllib2.Request(url, headers=headers)
     10 # 调用Request.add_header(),添加或者修改特定的header
     11 request = add_header("Connectin", "keep-alive")
     12 
     13 # Request对象作为urlopen()方法的参数,发给服务器响应
     14 response = urllib2.urlopen(request)
     15 
     16 html = response.read()
     17 
     18 print html

    随机添加/修改User-Agent

     1 import urllib2
     2 import random
     3 
     4 url = "http://www.itcast.cn"
     5 
     6 ua_list = [
     7     "Mozilla/5.0 (Windows NT 6.1; ) Apple.... ",
     8     "Mozilla/5.0 (X11; CrOS i686 2268.111.0)... ",
     9     "Mozilla/5.0 (Macintosh; U; PPC Mac OS X.... ",
    10     "Mozilla/5.0 (Macintosh; Intel Mac OS... "
    11 ]
    12 
    13 user_agent = random.choice(ua_list)
    14 
    15 request = urllib2.Request(url)
    16 
    17 #也可以通过调用Request.add_header() 添加/修改一个特定的header
    18 request.add_header("User-Agent", user_agent)
    19 
    20 # 第一个字母大写,后面的全部小写
    21 request.get_header("User-agent")
    22 
    23 response = urllib2.urlopen(request)
    24 
    25 html = response.read()
    26 print html
  • 相关阅读:
    软件需求,概要设计,详细设计(文档)
    需求文档和设计文档的区别
    Sqlyog和Navicat——mysql数据库图像化管理工具,
    Sqlyog 和Navicat
    端口占用问题
    List集合
    JSON——(JavaScript Object Notation, JS 对象简谱) 数据交换格式。JSON是一个序列化的对象或数组。
    Excel图表导出高清矢量位图片并裁剪的方法
    使用福昕PDF编辑器裁剪PDF页面
    Latex模板默认两栏的分栏的情况下怎么让图片和表格占一栏显示
  • 原文地址:https://www.cnblogs.com/cuzz/p/7641476.html
Copyright © 2011-2022 走看看