Python 爬虫 --- urllib

对于互联网数据,Python 有很多处理网络协议的工具,urllib 是很常用的一种。

一、urllib.request,request 可以很方便的抓取 URL 内容。

  • urllib.request.urlopen(url)  返回请求 url 后的二进制对象·

    参数:url=‘http://www.baidu.com’,请求的 url。

       data=None,请求的数据,可有可无,bytes 类型。

       timeout=3,设置访问超时时间,可有可无

       cafile=None,HTTPS 请求 CA 证书

       capath=None,CA 证书 path

       context=None,指定 SSL 设置,可有可无,ssl.SSLContext 类型

  • urllib.request.Request()  把请求独立成一个对象,对请求参数的设定更方便灵活

    参数:url,请求 url。

       data=None,请求参数,可有可无

       headers={},请求 header 参数。

       origin_req_host=None,请求 host 或 IP

       unverifiable=False,表明请求是否无法验证,默认为 false

       method=None,请求方法,get、post、put 等

  • urllib.request.ProxyHandler()  设置代理,参数为 dict,如:{ ‘http‘: ‘120.194.18.90:81‘}
  • urllib.request.build_opener()  构建 Opener,参数为上面设置的代理
  • urllib.request.install_opener()  安装 Opener,参数为上面构建的 opener
  • urllib.request.HTTPCookieProcessor()  cookie 操作,参数为 http.cookiejar.CookieJar() 得到的 cookie
from urllib import request,parse

#url
url = ‘http://fanyi.baidu.com/sug‘

#request data
data = {‘kw‘: ‘python‘}
data = parse.urlencode(data).encode(‘utf-8‘)

#proxy
proxy = {‘http‘: ‘120.194.18.90:81‘}
proxy_handler = request.ProxyHandler(proxy)
opener = request.build_opener(proxy_handler)
request.install_opener(opener)

#headers = {
#    ‘Content-Length‘: len(data),
#    ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0‘
#}

#req = request.Request(url=base_url, data=data, headers=headers)
req = request.Request(base_url, data)

req.add_header(‘User-Agent‘, ‘Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0‘)

rsp = request.urlopen(req)

result = rsp.read().decode(‘utf-8‘)

print(result)
#rsp 的属性
print(‘返回数据类型: {}‘.format(type(rsp)))

print(‘返回数据信息: {}‘.format(rsp))

print(‘header 信息: {}‘.format(rsp.info()))

print(‘header 信息: {}‘.format(rsp.getheaders()))

print(‘header 属性信息: {}‘.format(rsp.getheader(‘Server‘)))

print(‘响应状态信息: {}‘.format(rsp.status))

print(‘响应状态信息: {}‘.format(rsp.getcode()))

print(‘响应的 URL: {}‘.format(rsp.geturl()))
#cookie 操作

from urllib import request
from http impot cookiejar

#获取 cookie
cookie = cookiejar.CookieJar()
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler)

rsp = opener.open(‘http://www.baidu.com‘)
res = rsp.read().decode(‘utf-8‘)

print(res)

#保存 cookie
#FileCookieJar、MozillaCookieJar、LWPCookieJar,不同的保存格式
filename = ‘cookie.txt‘
cookie = cookiejar.MozillaCookieJar(filename)
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler)

rsp = opener.open(‘http://www.baidu.com‘)

cookie.save(igonre_discard=True, ignore_expires=True)

#使用 cookie
cookie cookiejar.MozillaCookieJar()
cookie.load(‘cookie.txt‘, ignore_discard=True, ignore_expires=True)
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler)
rsp = opener.open(‘http://www.baidu.com‘)

res = rsp.read().decode(‘utf-8‘)
print(res)

二、urllib.parse

  • urllib.parse.urlparse()  将 URL 解析成元组形式

    参数:

      url,访问 url

      scheme,解析协议,https、http

      allow_fragments=False,是够带有查询参数 

  • urllib.parse.urlunparse()  将元组拼接成完整 url
  • urllib.parse.urljoin()  拼接 url

  

#1
url = ‘https://www.baidu.com/s?‘
qs = {‘wd‘:‘python‘}

qs = urllib.parse.urlparse(qs)
full_url = url + qs

#2
url = urllib.parse.urlparse(‘http://www.baidu.com/s?wd=python‘)
print(url)

#3
data = [‘http‘, ‘www.baidu.com‘, ‘s‘, ‘wd=python‘]
print(urllib.parse.urlunparse(data))

#4
print(urllib.parse.urljson(‘http://www.baidu.com‘, ‘index.html‘))

三、urllib.error

  通过 try...except 可以捕捉异常,error 分为 HTTPError,URLError

try:
    res = urllib.request.urlopen(url).open().decode(‘utf-8‘)
    print(res)
except urllib.error.URLError as e:
    print(e)
except urllib.error.HTTPError as e:
    print(e)
except Exception as e:
    print(e)

四、urllib.robotparser

原文地址:https://www.cnblogs.com/rendd/p/10208182.html

时间: 2024-10-06 17:23:06

Python 爬虫 --- urllib的相关文章

python爬虫Urllib实战

Urllib基础 urllib.request.urlretrieve(url,filenname) 直接将网页下载到本地 import urllib.request >>> urllib.request.urlretrieve("http://www.hellobi.com",filename="D:\/1.html") ('D:\\/1.html', <http.client.HTTPMessage object at 0x0000000

Python爬虫--Urllib库

Urllib库 Urllib是python内置的HTTP请求库,包括以下模块:urllib.request (请求模块).urllib.error( 异常处理模块).urllib.parse (url解析模块).urllib.robotparser (robots.txt解析模块) 一.urllib.request 请求模块 1.urllib.request.urlopen urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=N

python爬虫---urllib库的基本用法

urllib是python自带的请求库,各种功能相比较之下也是比较完备的,urllib库包含了一下四个模块: urllib.request   请求模块 urllib.error   异常处理模块 urllib.parse   url解析模块 urllib.robotparse    robots.txt解析模块 下面是一些urllib库的使用方法. 使用urllib.request import urllib.request response = urllib.request.urlopen(

python 爬虫urllib基础示例

环境使用python3.5.2  urllib3-1.22 下载安装 wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz tar -zxf Python-3.5.2.tgz cd Python-3.5.2/ ./configure --prefix=/usr/local/python make && make install mv /usr/bin/python /usr/bin/python275 ln -s /us

Python爬虫-urllib的基本用法

from urllib import response,request,parse,error from http import cookiejar if __name__ == '__main__': #response = urllib.request.urlopen("http://www.baidu.com") #print(response.read().decode("utf-8")) #以post形式发送,没有data就是get形式 #请求头 #dat

python爬虫 urllib库基本使用

以下内容均为python3.6.*代码 学习爬虫,首先有学会使用urllib库,这个库可以方便的使我们解析网页的内容,本篇讲一下它的基本用法 解析网页 #导入urllib from urllib import request # 明确url base_url = 'http://www.baidu.com/' # 发起一个http请求,返回一个类文件对象 response = request.urlopen(base_url) # 获取网页内容 html = response.read().de

Python爬虫Urllib库的高级用法

设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如某网站,点登录之后,我们会发现登陆之后界面都变化 了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般是首先请求HTML文 件,然后加载JS,CSS 等等,经过多

Python爬虫的Urllib库有哪些高级用法?

本文和大家分享的主要是python爬虫的Urllib库的高级用法相关内容,一起来看看吧,希望对大家学习python有所帮助. 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它 是一段HTML代码,加 JS.CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服.所以最重要的部分是存在于HTML中的,下面我 们就写个例子来扒一个网页下来. imp

[python]利用urllib+urllib2解决爬虫分页翻页问题

最近由于公司的自动化测试工具需要将测试结果导出到excel中,奈何没有学SSH,导致无法在工具本身中添加(工具是开发做的),故转而使用python爬虫来做,开发过程中遇到了一个问题: 由于测试结果太多,需要翻页,而翻页时网址没有变化,这就导致抓取的时候没法依照网址去爬,遂去网上查找解决方法,最后找到利用urllib2提交post的方法来解决. 解决过程: 网址不变,而如果是用selenium的话,我又觉得太慢,毕竟selenium是用来做验收测试的,不是用来爬数据的.言归正传,利用urllib2