urllib2的使用(一)

135 阅读2分钟

urlopen()的使用,返回的类文件对象的读取方法

主要的工作是urlopen()的到的是一个类似于文件的对象,可以使用文件读取内容的几种方法

  • read 的返回结果:行式文件类型
  • readline 相当于文件中的一行一行读取,需要循环配合
  • readlines 的返回结果:列表
import urllib2

def download1(url):
    return urllib2.urlopen(url).read()  # 读取全部网页

def download2(url):
    return urllib2.urlopen(url).readlines()  # 读取每一行的网页数据,压入一个列表

def download3(url):
    response = urllib2.urlopen(url)  # 网页抽象为一个文件
    while True:
        line = response.readline()  # 读取一行
        if not line:
            break
        print(line)

url = "http://www.baidu.com"  #urlopen只能处理http,不可以处理https
# print download1(url)
# print download2(url)
print(download3(url))

response对象的三个方法geturl,getcode,info

主要看下response的方法

import urllib2

url = "http://www.baidu.com"
response = urllib2.urlopen(url)
print(response.geturl())
print(response.getcode())
print(response.info())

数据展示如下

http://www.baidu.com

200

Bdpagetype: 1
Bdqid: 0xf3af2e8a00052fba
Cache-Control: private
Content-Type: text/html;charset=utf-8
Date: Sat, 14 Mar 2020 09:51:47 GMT
Expires: Sat, 14 Mar 2020 09:50:56 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1
Set-Cookie: BAIDUID=514C4C76B0DCAB10C9281CC026C93D45:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=514C4C76B0DCAB10C9281CC026C93D45; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1584179507; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BAIDUID=514C4C76B0DCAB1058237D1ABBB623B7:FG=1; max-age=31536000; expires=Sun, 14-Mar-21 09:51:47 GMT; domain=.baidu.com; path=/; version=1; comment=bd
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=30974_1440_21115_30842_30823_26350_30717; path=/; domain=.baidu.com
Traceid: 1584179507065569434617559304642381557690
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Connection: close
Transfer-Encoding: chunked

增加headers

给Request增加headers参数,模拟浏览器

import urllib2

def download(url):
    headers = {"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0);"}
    request = urllib2.Request(url,headers = headers)
    # 发起请求,注意这里使用的已经不是urlopen,在这里可以这样记,request携带请求头,而urlopen只是打开网页
    # 构造请求,使用urlopen开启请求
    data = urllib2.urlopen(request).read()
    # 打开请求抓取数据
    return data

url = "https://www.lagou.com/jobs/list_python/p-city_2"
print(download(url))