精华内容
下载资源
问答
  • Python爬虫-Urllib方式- 前言此次我将讲述Python爬虫urllibrequests访问方式的一些基础的操作遇到的一些坑,因为Python版本有2.7目前的3.x版本,爬虫会有稍许区别,我会介绍一些区别,爬虫方式有多种,没有...

    Python爬虫-Urllib方式

    - 前言

    此次我将讲述Python爬虫urllib与requests访问方式的一些基础的操作和遇到的一些坑,因为Python版本有2.7和目前的3.x版本,爬虫会有稍许区别,我会介绍一些区别,爬虫方式有多种,没有最好的方式,随着数据的需求加大,爬虫工具也会越来越简洁方便。但是如果你能了解多种爬虫方法,你也能对网络爬虫有更清楚的认识,初学者我建议使用requests方式,它会让你学起来更容易上手,urllib出现的较早,用起来稍微复杂点,但是如果你希望读懂很多爬虫大神写的东西,甚至学习很多爬虫框架底层内容,可能还需要了解一下。

    一、Python2.7版本:

    在2.7版本下,Python urllib模块分为两部分,urllib和urllib2。

    (1)urllib和urllib2区别:

    1、urllib提供urlencode方法,将需要传输的字典格式数据转换成网络传输的str格式如百度链接:https://www.baidu.com/s?wd=python2.7%20&rsv_spt=1 ‘&’符号后面就是我们传输的数据

    2 、urllib2可以接受一个Request类对象,这样就意味着urllib2可以更改你的请求头数据以及更换ip代理,而urllib只能接受URL,无法更换请求数据

    3、urllib还有一些方法如urlretrieve下载图片和视频,quote转码特殊字符是urllib2所没有的,所以我们经常需要使用urllib和urllib2协同工作

    (2)请求网页基本命令:

    这里加入了请求头参数user_agent,如果不带请求头很容易被反爬屏蔽。

    import urllib2

    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

    headers = { 'User-Agent' : user_agent }

    req = urllib2.Request('http://www.baidu.com',headers = headers)

    res = urllib2.urlopen(req)

    print res.read()

    (3)添加请求参数方式访问网页:

    目前大多数网站都有使用post请求,post请求方式都需要自己提供请求参数,比如登录页面。get方式请求也有参数只是在url已经自己带上了参数如百度的搜索,所以并不需要额外的添加。

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

    (4)添加代理访问网页:

    添加代理是反反爬策略中最实用的方法,如果有大量代理会让你的爬虫更快速高效的获取大量数据。

    url=''

    headers['User-Agent']='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'

    req=urllib2.Request(url,headers=headers)

    ip = '113.122.42.161:6675'

    proxy_handler = urllib2.ProxyHandler({'http':ip})

    opener = urllib2.build_opener(proxy_handler)

    urllib2.install_opener(opener)

    response = urllib2.urlopen(req)

    data=response.read().decode('utf-8')

    (5)配置cookie

    有的网站访问需要验证cookie信息,cookie也可以用来免登陆操作。

    import urllib2

    import cookielib #python2.7 需要用这个

    req = urllib2.request(url,headers=headers)

    cookie = cookielib.CookieJar()

    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

    urllib2.install_opener(opener)

    response = urllib2.urlopen(req)

    二、Python 3.5版本:

    (1)py2.7与py3.5版本urllib的区别:

    Python3.5 版本下将python2.7版本的urllib和urllib2 合并在一起成一个新的urllib,方法并入error、parse、request、response下,连接请求基本在request中通过urllib.request调用,数据处理的一些方式放入parse中,如2.7版本的urlencode方法就放在parse下,通过urllib.parse.urlencode调用,所以区别不大,重点介绍几个需要注意的。

    (2)请求方式:

    import urllib

    headers = {}

    url=''

    ip = '113.122.42.161:6675'

    headers['User-Agent']='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'

    #urllib2中的Request和urlopen都合并到urllib.request下

    req=urllib.request.Request(url,headers=headers)

    proxy_handler = urllib.request.ProxyHandler({'http': ip})

    opener = urllib.request.build_opener(proxy_handler)

    urllib.request.install_opener(opener)

    #使用自己安装好的Opener

    response=urllib.request.urlopen(req,timeout=10) #timeout 设置最长请求时间,如果超时,停止请求

    (3)配置cookie:

    import urllib

    import http.cookiejar #和2.7不同

    req = urllib.request.Request(action_url,data=data,headers=header) #data是传送参数,post请求常用

    cookie = http.cookiejar.CookieJar()

    opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))

    urllib.request.install_opener(opener)

    response = urllib.request.urlopen(req,timeout=60)

    Python爬虫-Requests方式

    介绍

    Requests是Python中的HTTP客户端库,网络请求更加直观方便,它与Urllib最大的区别就是在爬取数据的时候连接方式的不同。urllb爬取完数据是直接断开连接的,而requests爬取数据之后可以继续复用socket,并没有断开连接。个人比较推荐使用requests方式,常见的组合是Requests+BeautifulSoup(解析网络文本的工具库),解析工具常见的还有正则,xpath,个人觉得xpath和BeautifulSoup标签类解析学一种就好了,正则都可以学,用的地方很多,这个看个人喜好。

    (1)请求网页基本命令:

    import requests

    url = ''

    headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' }

    response = requests.get(url,headers = headers)

    print(response.text)

    (2)Post方式请求(添加请求参数):

    import requests

    url = ''

    headers = {}

    data = {

    'key':'value'

    }

    response = requests.post(url,data=data,headers=headers)

    #get方式添加请求参数方法

    #response = requests.get(url,params=data,headers=headers)

    print(response.status_code)

    print(response.text)

    如果用post请求登录用session对象比较好,它会帮助你保存前次操作,比如做验证码的时候,网络请求一次后,你读到验证码并成功输入正确验证信息,但是再一次网络请求时,网页将刷新验证码,导致验证出错。

    (3)使用session对象访问

    Requests提供了session的概念,使我们不需要关心Cookie值,可连续访问网页,并且如果你不访问登录页面直接发送post请求登录,则会被认为非法登录。因为访问登录界面式会分配一个Cookie,需要将这个Cookie在发送Post请求时带上,这种使用Session函数处理Cookie的方式之后会很常用。

    import requests

    url = ''

    headers = {}

    data = {

    'key':'value'

    }

    s= requests.Session()

    response = s.post(url,data=data,headers=headers)

    print(response.status_code)

    print(response.text)

    (4)添加代理请求

    import requests

    proxies={

    "http":"http://....",

    "https":"http://...."

    }

    response = resquests.get("",proxies=proxies)

    (5)返回请求信息的有关命令

    import requests

    resoonse= requestss.get()

    response.text #网页内容

    response.content #图片 视频二进制内容

    response.json ##返回json格式网页内容

    response.cookies #返回cookies

    response.status_code #返回状态码

    response.headers #返回头信息

    response.url #返回请求的url

    response,apparent_encoding #返回网页编码格式

    response.history #返回历史记录

    结语

    综上讲了urllib和requests的基本操作,希望能给一些对爬虫感兴趣的童鞋一个具体的概念,方法只是一种工具,试着去爬一爬会更容易上手,网络也会有很多的坑,做爬虫更需要大量的经验来应付复杂的网络情况。如果发现文章有错误的地方,欢迎指出,一起探讨学习。后续,我会写一些具体的爬虫项目。

    如果您喜欢我的文章,请关注或点击喜欢,您的支持是我最大的动力 ^ ^~!

    转载请注明作者及其出处

    展开全文
  • 浅谈urllib和requests

    2019-03-01 21:12:00
    urllib和requests的学习 urllib requests 参考资料 urllib urllib是python的基本库之一,内置四大模块,即request,error,parse,robotparser,常用的request,error,一个用于发送HTTP请求,一个用于处理请求的...

    urllibrequests的学习


    urllib

    urllibpython的基本库之一,内置四大模块,即requesterrorparserobotparser,常用的requesterror,一个用于发送HTTP请求,一个用于处理请求的错误。parse用于对URL的处理,拆分,全并等。

    基本用法

    # 导入 urllib 中的 request
    from urllib import request
    # 使用 urlopen,打开一个网址
    urllib_response = request.urlopen("http://www.baidu.com")
    # read() 方法用于读取响应, decode()  处理,默认 read() 是字节流
    print(urllib_response.read().decode("utf-8"))
    print(type(urllib_response.read()))  # <class 'bytes'>

    问题1:如果在发送请求时断网会怎样
    我是在断网的情况下实时的,urllib会提示urllib.error.URLError,即urlopen error [Errno -3] Temporary failure in name resolution,无法解析域名。

    from urllib import request, error
    # 解决方法是导入 error 模块
    # 使用 try except 方法捕获该错误,避免错误影响程序后续运行,也可以将该错误放入日志
    try:
        urllib_response = request.urlopen("http://www.baidu.com")
        print(urllib_response.read().decode('utf-8'))
    except error.URLError as e:
        print(e)

    问题2:如何添加请求头信息

    有添加请求头信息的需求,就当然有为什么要添加请求头信息的问题了
    要搞明这个问题,就要先了解原生请求头是什么,于是我写一个简单的web server,以下简称server

    import socket
    
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server:
        server.bind(('127.0.0.1', 5000))
        server.listen(5)
        while True:
            conn, ip = server.accept()
            req = b''
            while True:
                temp = conn.recv(1024)
                req += temp
                if len(temp) < 1024:
                    break
            print(req.decode('utf-8'))
            conn.sendall(b'HTTP/1.1 200 OK\r\nContent-Type:text/html\r\n\r\n')
            conn.close()

    此时再使用urlopen直接打开127.0.0.1:5000server显示如下信息

    GET / HTTP/1.1
    Accept-Encoding: identity
    Host: 127.0.0.1:5000
    User-Agent: Python-urllib/3.7
    Connection: close

    通过User-Agent可以看出,当前是python-urllib/3.7。即非合法的客户端,如浏览器,目标网站可以通过识别该字段来判断此次访问是否合法,以决定是否禁止其访问。当然,设置了合法的请求头也并非这个爬虫可以安然无恙,目标网站仍然可以通过其他算法也判断这个访问是否合法访问。不过,我们能做的就是把能做的做了

    urllib设置请求头
    from urllib import request
    """
    设置 headers 信息,其为字典格式
    使用 request.Request 构造请求
    使用 request.urlopen 打开请求
    """
    headers = {
        'User-Agent': ('Mozilla/5.0 (X11; Linux x86_64)'
                       ' AppleWebKit/537.36 (KHTML, like Gecko)'
                       ' Chrome/68.0.3440.106 Safari/537.36')
    }
    
    req = request.Request(url='http://127.0.0.1:5000', headers=headers)
    response = request.urlopen(req)
    print(response.read().decode("utf-8"))

    server显示如下,User-Agent已被成功修改

    GET / HTTP/1.1
    Accept-Encoding: identity
    Host: 127.0.0.1:5000
    User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    Connection: close

    requests

    requestspython的第三方库,通过pip install requests即可安装

    基本用法

    import requests
    
    response = requests.get("http://www.baidu.com")
    # 请求百度会出现乱码,因为百度默认解析编码为 utf-8
    # requests 的 response 默认为 ISO-8859-1
    # 通过 response.encoding 直接设置此次响应解析编码
    response.encoding = 'utf-8'
    # 通过 response.text 即可查看响应的文本 body
    print(response.text)

    1525011-20190301211128397-389171626.png

    如果要设置请求头,requests可以直接添加headers参数以设置请求头,而不用像urllibreqeust需要构造一个请求,再进行请求。因为请求头是在其内部已经构建了。

    import requests
    
    headers = {
        'User-Agent': ('Mozilla/5.0 (X11; Linux x86_64)'
                       ' AppleWebKit/537.36 (KHTML, like Gecko)'
                       ' Chrome/68.0.3440.106 Safari/537.36')
    }
    response = requests.get("http://127.0.0.1:5000", headers=headers)
    print(response.text)

    server的访问请求头信息的前后对比。

    GET / HTTP/1.1
    Host: 127.0.0.1:5000
    User-Agent: python-requests/2.20.1
    Accept-Encoding: gzip, deflate
    Accept: */*
    Connection: keep-alive
    
    
    GET / HTTP/1.1
    Host: 127.0.0.1:5000
    User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    Accept-Encoding: gzip, deflate
    Accept: */*
    Connection: keep-alive

    参考资料

    转载于:https://www.cnblogs.com/yuzw/p/10458788.html

    展开全文
  • 记住有个urllib的库就行了python2.X 有这些库名可用:urllib,urllib2, urllib3,httplib, httplib2, requestspython3.X 有这些库名可用: urllib, urllib3, httplib2, requests两者都有的urllib3和requests, 它们不是...

    若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了

    python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests

    python3.X 有这些库名可用: urllib, urllib3, httplib2, requests

    两者都有的urllib3和requests, 它们不是标准库. urllib3 提供线程安全连接池和文件post支持,与urllib及urllib2的关系不大. requests 自称HTTP for Humans, 使用更简洁方便

    对于python2.X:

    urllib和urllib2的主要区别:

    urllib2可以接受Request对象为URL设置头信息,修改用户代理,设置cookie等, urllib只能接受一个普通的URL.

    urllib提供一些比较原始基础的方法而urllib2没有这些, 比如 urlencode

    urllib官方文档的几个例子

    使用带参数的GET方法取回URL>>> importurllib>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" %params)>>> printf.read()

    使用POST方法>>> importurllib>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)>>> printf.read()

    使用HTTP代理,自动跟踪重定向>>> importurllib>>> proxies = {'http': 'http://proxy.example.com:8080/'}>>> opener =urllib.FancyURLopener(proxies)>>> f = opener.open("http://www.python.org")>>>f.read()

    不使用代理>>> importurllib>>> opener =urllib.FancyURLopener({})>>> f = opener.open("http://www.python.org/")>>> f.read()

    urllib2的几个官方文档的例子:

    GET一个URL>>> importurllib2>>> f = urllib2.urlopen('http://www.python.org/')>>> printf.read()

    使用基本的HTTP认证importurllib2

    auth_handler=urllib2.HTTPBasicAuthHandler()

    auth_handler.add_password(realm='PDQ Application',

    uri='https://mahler:8092/site-updates.py',

    user='klem',

    passwd='kadidd!ehopper')

    opener=urllib2.build_opener(auth_handler)

    urllib2.install_opener(opener)

    urllib2.urlopen('http://www.example.com/login.html')

    build_opener() 默认提供很多处理程序, 包括代理处理程序, 代理默认会被设置为环境变量所提供的.

    一个使用代理的例子

    proxy_handler= urllib2.ProxyHandler({'http': 'http://www.example.com:3128/'})

    proxy_auth_handler=urllib2.ProxyBasicAuthHandler()

    proxy_auth_handler.add_password('realm', 'host', 'username', 'password')

    opener=urllib2.build_opener(proxy_handler, proxy_auth_handler)

    opener.open('http://www.example.com/login.html')

    添加HTTP请求头部importurllib2

    req= urllib2.Request('http://www.example.com/')

    req.add_header('Referer', 'http://www.python.org/')

    r=urllib2.urlopen(req)

    更改User-agentimporturllib2

    opener=urllib2.build_opener()

    opener.addheaders= [('User-agent', 'Mozilla/5.0')]

    opener.open('http://www.example.com/')

    httplib 和 httplib2 httplib 是http客户端协议的实现,通常不直接使用, urllib是以httplib为基础 httplib2 是第三方库, 比httplib有更多特性

    httplib比较底层,一般使用的话用urllib和urllib2即可

    对于python3.X:

    这里urllib成了一个包, 此包分成了几个模块,

    urllib.request 用于打开和读取URL,

    urllib.error 用于处理前面request引起的异常,

    urllib.parse 用于解析URL,

    urllib.robotparser用于解析robots.txt文件

    python2.X 中的 urllib.urlopen()被废弃, urllib2.urlopen()相当于python3.X中的urllib.request.urlopen()

    几个官方例子:

    GET一个URL>>> importurllib.request>>> with urllib.request.urlopen('http://www.python.org/') as f:

    ...print(f.read(300))

    PUT一个请求importurllib.request

    DATA=b'some data'req= urllib.request.Request(url='http://localhost:8080', data=DATA,method='PUT')

    with urllib.request.urlopen(req) as f:pass

    print(f.status)print(f.reason)

    基本的HTTP认证importurllib.request

    auth_handler=urllib.request.HTTPBasicAuthHandler()

    auth_handler.add_password(realm='PDQ Application',

    uri='https://mahler:8092/site-updates.py',

    user='klem',

    passwd='kadidd!ehopper')

    opener=urllib.request.build_opener(auth_handler)

    urllib.request.install_opener(opener)

    urllib.request.urlopen('http://www.example.com/login.html')

    使用proxy

    proxy_handler= urllib.request.ProxyHandler({'http': 'http://www.example.com:3128/'})

    proxy_auth_handler=urllib.request.ProxyBasicAuthHandler()

    proxy_auth_handler.add_password('realm', 'host', 'username', 'password')

    opener=urllib.request.build_opener(proxy_handler, proxy_auth_handler)

    opener.open('http://www.example.com/login.html')

    添加头部importurllib.request

    req= urllib.request.Request('http://www.example.com/')

    req.add_header('Referer', 'http://www.python.org/')

    r=urllib.request.urlopen(req)

    更改User-agentimporturllib.request

    opener=urllib.request.build_opener()

    opener.addheaders= [('User-agent', 'Mozilla/5.0')]

    opener.open('http://www.example.com/')

    使用GET时设置URL的参数>>> importurllib.request>>> importurllib.parse>>> params = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})>>> url = "http://www.musi-cal.com/cgi-bin/query?%s" %params>>>with urllib.request.urlopen(url) as f:

    ...print(f.read().decode('utf-8'))

    ...

    使用POST时设置参数>>> importurllib.request>>> importurllib.parse>>> data = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})>>> data = data.encode('ascii')>>> with urllib.request.urlopen("http://requestb.in/xrbl82xr", data) as f:

    ...print(f.read().decode('utf-8'))

    ...

    指定proxy>>> importurllib.request>>> proxies = {'http': 'http://proxy.example.com:8080/'}>>> opener =urllib.request.FancyURLopener(proxies)>>> with opener.open("http://www.python.org") as f:

    ... f.read().decode('utf-8')

    ...

    不使用proxy, 覆盖环境变量的proxy>>> importurllib.request>>> opener =urllib.request.FancyURLopener({})>>> with opener.open("http://www.python.org/") as f:

    ... f.read().decode('utf-8')

    ...

    展开全文
  • python3 urllib和requests模块 urllib模块是python自带的,直接调用就好,用法如下: #处理get请求,不传data,则为get请求 import urllib from urllib.request import urlopen from urllib.parse import ...

    python3 urllib和requests模块

    urllib模块是python自带的,直接调用就好,用法如下:

    #处理get请求,不传data,则为get请求
    import urllib
    from urllib.request import urlopen
    from urllib.parse import urlencode
    url='http://127.0.0.1:1990/login'
    data={"username":"admin","password":123456}
    req_data=urlencode(data)#将字典类型的请求数据转变为url编码
    res=urlopen(url+'?'+req_data)#通过urlopen方法访问拼接好的url
    res=res.read().decode()#read()方法是读取返回数据内容,decode是转换返回数据的bytes格式为str
    print(res)
    
    #处理post请求,如果传了data,则为post请求
    import urllib
    from urllib.request import urlopen
    from urllib.request import Request
    from urllib.parse import urlencode
    url='http://127.0.0.1:1990/login'
    data={"username":"admin","password":123456}
    data=urlencode(data)#将字典类型的请求数据转变为url编码
    data=data.encode('ascii')#将url编码类型的请求数据转变为bytes类型
    req_data=Request(url,data)#将url和请求数据处理为一个Request对象,供urlopen调用
    with urlopen(req_data) as res:
        res=res.read().decode()#read()方法是读取返回数据内容,decode是转换返回数据的bytes格式为str
    print(res)

    相比较urllib模块,requests模块要简单很多,具体用法如下:

    # get请求
    import requests
    url='http://127.0.0.1:1990/login'
    data={"username":"admin","password":123456}
    res=requests.get(url,data)#直接用requests.get(url,data)即可,其中.get表示为get方法,不需要对字典类型的data进行处理
    #res=res.text#text方法是获取到响应为一个str,也不需要对res进行转换等处理
    res=res.json()#当返回的数据是json串的时候直接用.json即可将res转换成字典
    print(res)
    
    #post请求
    import requests
    url='http://127.0.0.1:1990/login'
    data={"username":"admin","password":123456}
    res=requests.post(url,data)#直接用requests.post(url,data)即可,其中.post表示为post方法,不需要对字典类型的data进行处理
    #res=res.text#text方法是获取到响应为一个str,也不需要对res进行转换等处理
    res=res.json()#当返回的数据是json串的时候直接用.json即可将res转换成字典
    print(res)
    
    #当传参格式要求为json串时
    import requests
    url='http://127.0.0.1:1990/login'
    data={"username":"admin","password":123456}
    res=requests.post(url,json=data)#只需要在这里指定data为json即可
    #res=res.text#text方法是获取到响应为一个str,也不需要对res进行转换等处理
    res=res.json()#当返回的数据是json串的时候直接用.json即可将res转换成字典
    print(res)
    
    #传参含cookie
    import requests
    url='http://127.0.0.1:1990/login'
    data={"username":"admin","password":123456}
    cookie={"sign":"123abc"}
    res=requests.post(url,json=data,cookies=cookie)#只需要在这里指定cookies位cookie即可,headers,files等类似
    res=res.json()
    print(res)

    可见requests模块要方便很多,建议使用requests模块。

    展开全文
  • 请说一下urllib和requests的区别? 回答: urllib是python内置的包,不需要单独安装;requests是第三方库,需要单独安装(pip install requests) requests库是在urllib的基础上封装的,比urllib更加好用&...
  • urllib和requests

    2019-03-17 17:11:00
    目录 1. Python3 使用urllib库请求网络 1.1 基于urllib库的GET请求 1.2使用User-Agent伪装后请求网站 ...1.3 基于urllib库的POST请求,并用Cookie保持会话 ...2.1 基于requests库的GET请求 2.2 基于r...
  • 1、requests库之urllib和requests程序

    千次阅读 2020-11-10 08:47:59
    在介绍使用requests之前,不得不介绍python种自带的urllib这个库,如果你安装的是python2.7.x,那么你可能发现了,还有一个urllib2。甚至,你可能还知道有一个urllib3.urllib是python最早就自带的,相当于原生的处理...
  • Urllib 我们首先要了解urlopen urlretrieve Request 这三个方法 请求一个url (baidu) 方法一:使用urlopen import urllib.request response = urllib.request.urlopen('http://www.baidu.com').read().decode...
  • urllib from urllib import request # 没有使用代理的 url = 'http://httpbin.org/ip' resp = request.urlopen(url) print(resp.read()) # 使用代理的 url = 'http://httpbin.org/ip' # 1. 使用ProxyHandler,传入...
  • 1. urllib使用方法: (1)处理 get 请求。不传 data,则为 get 请求 import urllib from urllib.request import urlopen from urllib.parse import urlencode url=‘http://127.0.0.1:1990/...
  • OK 直接上代码 IP池的构建: 1.要么去网上找免费代理 2.要么付费代理 调用API接口 3.要么自建服务器 拿到...然后我们只需要读取txt,然后将txt每行的IP添加至列表,再随机生成IP给到urllib里,问题就解决了! ...
  • 在我们爬取某个网站的时候,经常会遇见访问失败,也就是状态码不是200的情况: 这里就涉及到了反爬虫的问题,其中有个因素就是headers的处理!...在urllib中添加单个headers或多个headers: Opener 或 Requ.
  • requests库入门-3-urllib和requests小程序

    千次阅读 2017-08-23 22:59:09
    在介绍使用requests之前,不得不介绍python种自带的urllib这个库,如果你安装的是python2.7.x,那么你可能发现了,还有一个urllib2。甚至,你可能还知道有一个urllib3.urllib是python最早就自带的,相当于原生的处理...
  • urllib.request 打开读取 URL urllib.error 包含 urllib.request 抛出的异常 urllib.parse 用于解析 URL urllib.robotparser 用于解析 robots.txt 文件 import urllib.request import re import ssl #若报错:...
  • 掌握了这些基本点,才能够熟悉爬虫的构成获取有用的信息。 编写一个小爬虫个人感觉可以分为三个阶段: 1:请求,这个就是使用urlib2或者requests发送http请求。要掌握期中一些用法以及一些常用的请求方式。 2:...
  • 爬虫的本质:模拟浏览器打开网页,获取网页中我们需要的数据信息 浏览器打开网页的过程: 在浏览器中输入 URL 地址 DNS 服务器找到服务器主机,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果,...
  • from urllib import request url = '' html = request.urlopen(url).read() html.decode() #使用requests获取html内容 import requests url = '' r = requests.get(url) #乱码转换成二进制码再解码成字符串形式 ...
  • urllib: importurllib.request url=['http://wz.lanzh.95306.cn/mainPageNoticeList.do?method=init&id=2000001&cur=1'] #通常我们爬取网页,在构造http请求的时候,都需要加上一些额外信息,什么...
  • 目录get案例post案例requests get案例 需求:爬取贴吧数据 输入要爬取的贴吧主题 输入起始页终止页 把每一页的数据保存到本地(例如 第一页.html 第二页.html) 分析: url里面kw对应的是贴吧的主题,pn页数...
  • 1.urllib方法 import urllib.request#导入模块 res = urllib.request.urlopen('http://www.sina.com.cn/')#打开网页 html = res.read()#读取内容,二进制形式 html = html.decode('utf-8')#转换为utf-8 ...
  • 1、urllib库 请求模块 urllib.request 异常处理模块 urllib.error url解析模块 urllib.parse robotx.txt模块 urllib.robotparse (1)请求与响应 函数原型: urllib.request.urlopen(url, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,153
精华内容 861
关键字:

urllib和requests