精华内容
下载资源
问答
  • 主要介绍了python爬虫 urllib模块反爬虫机制UA详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了python爬虫 urllib模块url编码处理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了Python爬虫 urllib2的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了python爬虫 urllib模块发起post请求过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • python爬虫urllib使用和进阶 上节课已经介绍了爬虫的基本概念和基础内容,接下来就要开始内容的爬取了。 其实爬虫就是浏览器,只不过它是一个特殊的浏览器。爬取网页就是通过HTTP协议访问相应的网页,不过通过浏览器...

    查看上一节:python爬虫分类和robots协议

    python爬虫urllib使用和进阶

    上节课已经介绍了爬虫的基本概念和基础内容,接下来就要开始内容的爬取了。

    其实爬虫就是浏览器,只不过它是一个特殊的浏览器。爬取网页就是通过HTTP协议访问相应的网页,不过通过浏览器访问往往是人的行为,把这种行为变成使用程序来访问就是爬虫的过程。

    用户在使用浏览器的时候,翻阅速度是比较慢的,但是爬虫在访问的时候速度是很快的,它会很快的获取到页面上的内容,并将其变成自己网站的内容,所以对于开发者来讲,对于这些搜索引擎的爬虫是又爱又恨的。

    有的网站会设置反爬虫策略来拒绝爬虫对网站内容的爬取要求。此时我们要爬取这种网站的话,是要对程序进行包装的,尽量去模拟人的行为来获取网站内容。

    urllib包

    urllib是Python提供的一个工具包,用来处理url和相应的一些内容的。

    Python 2中提供了urllib和urllib 2。urllib提供较为底层的接口, urllib2对urllib进行了进一步封装。
    Python 3中将urllib合并到了urllib 2中, 并只提供了标准库urllib包。我们重点使用的是Python3,但是它们的接口都是相同的,掌握了就可以在任何场景使用。

    urllib还有一些子包,分别介绍下:

    urllib.request模块(用的比较多)

    用于打开和读写url。模块定义了在基本和摘要式身份验证、重定向、cookies等应用中打开URL(主要是HTTP)的函数和类。

    • urllib.error 包含了由urllib.request引起的异常
    • urllib.parse 用于解析url
    • urllib.robot parser 分析robots.txt文件

    urlopen方法

    格式:url open(url, data=None)
    注释:url是链接地址字符串, 或请求对象。
    data是提交的数据, 如果data为None发起GET请求, 否则发起POST请求。见urllib.request.Request#get_method返回http.client.HTTPResponse类的响应对象, 这是一个类文件对象。
    接下来看一段代码:
    image.png
    验证其中的“返回真正的URL”:打开http://www.bing.com 按下F12 打开其中的Network状态栏,点击刷新:
    image.png
    可以看到第一个访问的是必应网站,这里的301代表的意思是,首先打开必应的网站,然后通过持久的移动到中国的必应网站;
    这里的location是跳转位置,301代表永久的跳转,302 代表的是临时的跳转;
    代码运行结果:
    image.png
    可以发现,urlopen是可以自动跳转的。
    总结:
    上例, 通过urllib.request.url open方法, 发起一个HTTP的GET请求, WEB服务器返回了网页内容。响应的数据被封装到类文件对象中, 可以通过read方法、readline方法、read lines方法获取数据, status和reason属性表示返回的状态码, info方法返回头信息, 等等。
    User-Agent问题
    上例的代码非常精简, 即可以获得网站的响应数据。url open方法只能传递url和data这样的数据, 不能构造HTTP的请求。例如useragent。
    源码中构造的useragent如下:
    image.png
    当前显示为:Python-urllib/3.6
    有些网站是反爬虫的,所以要把爬虫伪装成浏览器。随便打开一个浏览器,复制浏览器的UA值,进行伪装。
    UA值获取方法:
    打开浏览器的设置。选择高级,选择自定义UserAgent字符串,随意切换想要的UA值。
    image.png
    这里演示的是使用Chrome的ua值:
    image.png
    通过UA值的伪装,就可以告诉别人,“我是一个浏览器”,那么UA值该如何使用呢?这里就要用到request类:

    Request类
    首先它会有一个header,在这里记录了一些基本的信息:
    image.png
    还要有一个User-agent,这里是一些版本的要求,以及对能接受的浏览器版本、CSS样式等信息的描述:
    image.png
    有了以上两个参数,就可以构建一个request请求了。

    接下来就是对request的使用实战演示:
    image.png
    运行结果为:
    image.png
    总结:
    格式:Request(url, data=None, headers=() )
    要在发起请求之前将内容填充完毕!

    初始化方法, 构造一个请求对象。可添加一个header的字典。data参数决定是GET还是POST请求。add_header(key, val) 为header中增加一个键值对。

    接下来看一个示例:

    from urllib.request import Request, url open
    import random#随机函数,用来随机UA值
    #打开一个url返回一个Request请求对象
    #url='https://movie.douban.com/'#注意尾部的斜杠一定要有
    url='http://www.bing.com/'
    ua_list=[#包含UA值的List,不停地切换地址,保证不被发现是爬虫
        ”Mozilla/5.0(WindowsNT I 6.1; Win 64; x 64) Apple WebKit/537.36(KHTML, like Gecko)Chrome /57.0.2987. 133 Safari/537.36”, #chrome
        ”Mozilla/5.0(Windows; U; WindowsNT 6.1; zh-CN) Apple webKit/537.36(KHTML, like Gecko)Version /5.0. 1 Safari/537.36”, #safa fi
        ”Mozilla/5.0(WindowsNT 6.1; Win 64; x 64; rv:50. 0) Gecko/ 20100101 Firefox/50.0”, #Firefox“Mozilla/5.0(compatible; MSIE 9.0; WindowsNT 6.1; Trident/5.0) ”#IE
    ua=random.choice(ua_list) #随机一个UA值
    #ua需要加到请求头中
    request=Request(url)
    request.add_header('User-Agent', random.choice(ua_list) )
    print(type(request) )
    response=url open(request, timeout=20) #request对象或者url都可以
    print(type(response) )
    
    with response:
        print(1, response.status, response.get code() , response.reason)#状态, get code本质上就是返回
    status
        print(2, response.geturl() )#返回数据的url。如果重定向, 这个url和原始url不一样
        # 例如原始url是http://www.bing.com/, 返回http://cn.bing.com/
        print(3, response.info() )#返回响应头headers
        print(4, response.read() )#读取返回的内容
    
    print(5, request.get_header('User-agent') )
    print(6,'user-agent'.capitalize() )

    执行结果为:
    image.png
    到这里就完成了对User-agent的修改,同时也学会了request和urlopen的使用方式。

    上述的简单代码是学习爬虫的第一步,就算以后在开发中会用到框架,但是还是从基本内容出发的,希望同学们可以多加了解!

    点击查看配套视频课程

    获取更多内容,请订阅 Python学习站 官方技术圈!

    展开全文
  • Python爬虫Urllib2库的高级用法

    转载:静觅 » Python爬虫入门四之Urllib库的高级用法

    为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性

    1、设置headers

    # _*_coding:utf-8_*_
    
    import urllib
    import urllib2
    url = "http://www.zhihu.com"
    user_agent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"
    referer = "www.zhihu.com"
    headers = {"User-Agent":user_agent,"Referer":referer}
    postdata = {"username":"tyjs","password":"jhhu8"}
    data = urllib.urlencode(postdata)
    req = urllib2.Request(url,data,headers)
    response = urllib2.urlopen(req)
    print response.read()

    其中,agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以可以在headers中设置agent

    另外,对付防盗链,服务器会识别headers中的referer是不是它自己,如果不是,有的服务器不会响应,所以我们还可以在headers中加入referer

    2、Proxy 代理的设置

    # _*_coding:utf-8_*_
    
    import urllib2
    #urllib2.ProxyHandler()  在程序中动态设置代理
    proxy = urllib2.ProxyHandler({'http':'112.254.124.23:8118'})
    opener = urllib2.build_opener(proxy)
    #install_opener:设置urllib2的全局opener,之后所有的HTTP访问都会使用这个代理
    urllib2.install_opener(opener)
    res = urllib2.urlopen("http://www.baidu.com")
    print res.read()
    3、Timeout的设置

    #!/usr/bin/env python
    # _*_coding:utf-8 _*_
    # @Time     :2017/8/20 16:23
    # @Author   :luoyu_bie
    # @Site     :
    # @File     :timeout1.py
    # @Software :PyCharm Community Edition
    """
    urlopen第三个参数就是timeout的设置,可以设置等待多久超时
    为了解决一些网站实在响应过慢而造成的影响。
    例如下面的代码,如果第二个参数data为空那么要特别指定是timeout是多少,写明形参,如果data已经传入,则不必声明。
    """
    import urllib2
    req = urllib2.Request('http://www.zhihu.com')
    response = urllib2.urlopen(req,timeout=10)
    #或者 response = urllib2.urlopen(req,data,10)
    print response.read()




    展开全文
  • 这篇文章主要介绍了python爬虫 urllib模块发起post请求过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 urllib模块发起的POST请求 案例:爬取百度翻译...

    这篇文章主要介绍了python爬虫 urllib模块发起post请求过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    urllib模块发起的POST请求

    案例:爬取百度翻译的翻译结果
    1.通过浏览器捉包工具,找到POST请求的url
    针对ajax页面请求的所对应url获取,需要用到浏览器的捉包工具。查看百度翻译针对某个字条发送ajax请求,所对应的url

    点击clear按钮可以把抓包工具,所抓到请求清空
    在这里插入图片描述
    然后填上翻译字条发送ajax请求,红色框住的都是发送的ajax请求在这里插入图片描述
    抓包工具All按钮代表 显示抓到的所有请求 ,包括GET、POST请求 、基于ajax的POST请求
    XHR代表 只显示抓到的基于ajax的POST请求在这里插入图片描述
    哪个才是我们所要的基于ajax的POST请求,这个POST请求是携带翻译字条的苹果请求参数在这里插入图片描述
    再看看这个POST请求 对应的请求URL ,这个URL是我们要请求的URL在这里插入图片描述
    发起POST请求之前,要处理POST请求携带的参数 3步流程:
    一、将POST请求封装到字典
    二、使用parse模块中的urlencode(返回值类型是字符串类型)进行编码处理
    三、将步骤二的编码结果转换成byte类型

    import urllib.request
    import urllib.parse
    # 1.指定url
    url = 'https://fanyi.baidu.com/sug'
    # 发起POST请求之前,要处理POST请求携带的参数 流程:
    # 一、将POST请求封装到字典
    data = {
      # 将POST请求所有携带参数放到字典中
      'kw':'苹果',
    }
    # 二、使用parse模块中的urlencode(返回值类型是字符串类型)进行编码处理
    data = urllib.parse.urlencode(data)
     
    # 三、将步骤二的编码结果转换成byte类型
    data = data.encode()
     
    '''2. 发起POST请求:urlopen函数的data参数表示的就是经过处理之后的
    POST请求携带的参数
    '''
    response = urllib.request.urlopen(url=url,data=data)
     
    data = response.read()
    print(data)
    

    把拿到的翻译结果 去json在线格式校验(在线JSON校验格式化工具(Be JSON)),

    点击格式化校验和unicode转中文
    在这里插入图片描述
    内容就以上怎么多,最后给大家推荐一个口碑不错的公众号【程序员学府】,这里有很多的老前辈学习技巧,学习心得,面试技巧,职场经历等分享,更为大家精心准备了零基础入门资料,实战项目资料,每天都有程序员定时讲解Python技术,分享一些学习的方法和需要留意的小细节,关注以下的公众号在这里插入图片描述

    展开全文
  • Python爬虫urllib模块

    2018-07-03 20:17:12
    Python爬虫练习(urllib模块) 1、获取百度首页数据 流程:a.设置请求地址 c.设置请求时间 d.获取响应(对响应进行解码) ''' 获取百度首页 ''' import urllib from urllib import request # urllib.request = ...

    Python爬虫练习(urllib模块)

    关注公众号“轻松学编程”了解更多。

    1、获取百度首页数据

    流程:a.设置请求地址 b.设置请求时间 c.获取响应(对响应进行解码)

    '''
    获取百度首页
    '''
    import urllib
    from urllib import request  # urllib.request = urllib2
    
    '''
    url, 请求地址
    data=None, get请求,当data不为空时则是post请求
     timeout  请求时间
    '''
    # 获取请求数据
    try:
        # 设置请求时间为1秒,超时则抛出错误
        response = urllib.request.urlopen('http://www.baidu.com',timeout=1)
        print(type(response))
        print(response.read().decode('utf-8'))
    except Exception as e:
        print(e)
        #打印结果为<urlopen error timed out>
    
    2、模拟百度接口

    流程:a.对关键字编码 b.设置请求地址 c.设置请求体(请求地址、请求头) d.获取响应(对响应进行解码)

    '''
    模拟百度接口
    '''
    import urllib
    from urllib import request,parse
    
    def baiduAPI(kw):
        '''
    
        :param kw: 关键字
        :return: response,内容是html
        '''
        # a.对关键字编码
        # 将字典拼接成wd1=123&wd2=1234字符串,即在url中携带参数
        kw = {"kw": kw}
        wd = urllib.parse.urlencode(kw,encoding="utf-8",errors="ignore")
        #解码
        # kw = urllib.parse.unquote(wd,encoding="utf-8",errors="ignore")
    
        # b.设置请求地址
        url = "http://www.baidu.com/s?wd=" + wd
        # 设置请求头
        header = {
            "User-Agent": '''Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'''
        }
        # c.设置请求体
        req = urllib.request.Request(url,headers=header)
    
        # d.获取响应
        response = urllib.request.urlopen(req)
    
        # 对响应进行解码
        return response.read().decode("utf-8")
    
    if __name__ == '__main__':
        kw = input("请输入搜索关键字:")
        response = baiduAPI(kw)
        print(response)
    

    注意:路由地址补全:

    http://www.baidu.com/

    https://www.baidu.com

    否则有可能报错:

    #请求地址不完整
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
    urllib.error.HTTPError: HTTP Error 400: Bad Request
    
    3、爬取豆瓣电影

    流程:a.动态构建url b.设置请求体(请求地址、请求头) c.获取响应(对响应为json数据) d.解析json数据 e.把数据写入文件

    打开豆瓣电影:https://movie.douban.com/ 找到“分类点击” f12(或右键选择检查)打开控制台调试器–>找到Newwork -->选中XHR -->刷新页面 -->查看响应的数据获取url -->把页面往下拖点击“获取更多” -->查看多出来的响应,对比其中的url差别。

    这里写图片描述

    这里写图片描述

    import json
    import urllib
    from urllib import request
    # 首页
    # https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=0
    # 第二页
    # https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=20
    
    # a.动态构建url  b.设置请求体(请求地址、请求头)
    # c.获取响应(对响应为json数据) d.解析json数据 e.把数据写入文件
    
    def getDouBanMovieInfo(pageRange):
        '''
        获取豆瓣电影信息
        :param pageRange:页码范围
        :return: json数据
        '''
        # a.动态构建url
        for i in range(pageRange):
            # 一页20条数据
            url = "https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=%d" %(i * 20)
    
            # 设置请求头,模拟成是浏览器访问
            header = {
                "User-Agent": '''Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
                AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'''
            }
            # b.设置请求体(请求地址、请求头)
            req = urllib.request.Request(url,headers=header)
            # c.获取响应(对响应为json数据)
            response = urllib.request.urlopen(req).read().decode("utf-8")
            # d.解析json数据
            mdata = json.loads(response)
            data = mdata["data"]
            # print(data)
            for i in data:
                # 明星
                casts = i["casts"]
                # 导演
                directors = i["directors"]
                # 电影名
                title = i["title"]
                # print(directors)
                # e.把数据写入文件
                with open("movie.txt","a+",encoding="utf-8",errors="ignore") as f:
                    item = "电影:"+title + "  导演:" + ",".join(directors) + "  演员:" + ",".join(casts)
                    f.write(item + "\n")
                    f.flush()
    
    if __name__ == '__main__':
        pageRange = int(input("输入页码范围:"))
        # 读取1也数据
        getDouBanMovieInfo(pageRange)
    

    这里写图片描述

    4、阿里招聘

    流程

    1、获取相关岗位总页数

    a.设置请求地址(种子) b.设置要提交的表单数据 c.获取响应(对响应为json数据) d.解析json数据 e.返回数据

    2、获取相关岗位信息

    a.设置请求地址 b.设置要提交的表单数据 c.设置请求体 d.获取响应(对响应为json数据) e.解析json数据 f.返回数据

    这里写图片描述

    import json
    import urllib
    from urllib import request,parse
    
    
    def getTotalPage(kw):
        '''
        获取相关岗位总页数
        :param kw: 搜索关键字
        :return: int 总页数
        '''
        # a.设置请求地址(种子)
        url = "https://job.alibaba.com/zhaopin/socialPositionList/doList.json"
        # 设置请求头
        header = {
            "User-Agent": '''Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'''
        }
        # b.设置要提交的表单数据
        data = {
            "pageSize": "10",
            "t": "0.6069253832315697",
            "keyWord": kw,
            "location": "",
            "second": "",
            "first": "",
            "pageIndex": "1",
        }
        # 表单数据编码
        data = urllib.parse.urlencode(data).encode("utf-8")
        # 设置请求体
        req = urllib.request.Request(url,data=data,headers=header)
        # 获取响应
        response = urllib.request.urlopen(req).read().decode("utf-8")
        # d.转json
        data = json.loads(response)
        print(data)
        return data["returnValue"]["totalPage"]
    
    def getPosition(kw,totalPage):
        '''
        获取相关岗位数量
        :param kw: 搜索关键字
        :param totalPage: 总页数
        :return:
        '''
        # pageIndex是从1开始
        for i in range(1,totalPage + 1):
            # a.设置请求地址
            url = "https://job.alibaba.com/zhaopin/socialPositionList/doList.json"
            # 设置请求头
            header = {
                "User-Agent": '''Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
                    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'''
            }
            # b.设置要提交的表单数据
            data = {
                "pageSize": "10",
                "t": "0.6069253832315697",
                "keyWord": kw,
                "location": "",
                "second": "",
                "first": "",
                "pageIndex": i,
            }
            # 表单数据编码
            data = urllib.parse.urlencode(data).encode("utf-8")
            # 设置请求体,POST请求
            req = urllib.request.Request(url, data=data, headers=header)
            # 获取响应
            response = urllib.request.urlopen(req).read().decode("utf-8")
            # d.转json
            data = json.loads(response)
            dataValue = data["returnValue"]["datas"]
    
            for job in dataValue:
                # 岗位名称
                name = job["name"]
                # # 要求
                # requirement = job["requirement"]
                # 学历
                degree = job["degree"]
                # # 描述
                # description = job["description"]
                # 工作经历
                workExperience = job["workExperience"]
                # print(name,requirement,degree,description,workExperience)
                with open("joblist.txt","a+",encoding="utf-8") as f:
                    item = "岗位:" + name + " 学历:" + degree + " 工作经历:"+workExperience + "\n"
                    f.write(item)
                    f.flush()
    
    if __name__ == '__main__':
        # 查询岗位列表
        jobList = ["python","java"]
        # 获取职位总页数
        for job in jobList:
            totalPage = getTotalPage(job)
            getPosition(job,totalPage)
    
    5、12306

    流程

    a.设置忽略安全证书 b.设置请求体(请求地址、请求头) c.获取响应(对响应进行解码)

    import urllib
    from urllib import request
    import ssl
    
    # a.设置忽略安全证书 b.设置请求体(请求地址、请求头) d.获取响应(对响应进行解码)
    # 设置忽略安全证书
    context = ssl._create_unverified_context()
    url = "http://www.12306.cn/mormhweb/"
    # 设置请求头,模拟成是浏览器访问
    header = {
        "User-Agent": '''Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
                AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'''
    }
    req = urllib.request.Request(url,headers=header)
    response = urllib.request.urlopen(req,context=context).read().decode("utf-8")
    print(response)
    
    6、51job获取岗位数

    流程

    a.设置正则匹配 b.对岗位进行utf-8编码 c.设置url d.设置请求体(请求地址、请求头) e.获取响应(对响应进行解码)

    # 获取岗位数量
    '''
    <div class="rt">
                    共3500条职位
                </div>
    '''
    import urllib
    from urllib import request,parse
    import re
    # a.设置正则匹配 b.设置请求体(请求地址、请求头) d.获取响应(对响应进行解码)
    # 设置正则匹配
    jobNumRe = "共(\d+)条职位"
    
    def getJobNum(job):
        '''
        获取职位数量
        :param job: 职位
        :return: int
        '''
        # 编码,空键
        job = urllib.parse.urlencode({"":job})
        url = "https://search.51job.com/list/030200,000000,0000,00,9,99,"+job+",2,1.html"
        # 设置请求头,模拟成是浏览器访问
        header = {
            "User-Agent": '''Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
                    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'''
        }
        req = urllib.request.Request(url,headers=header)
        response = urllib.request.urlopen(req).read().decode("gbk")
        jobNum = re.findall(jobNumRe,response)
        return jobNum
    
    if __name__ == '__main__':
        jobList = ["python","java","项目经理"]
        for job in jobList:
            print(getJobNum(job))
    
    
    7、模拟有道翻译
    import urllib
    from urllib import request,parse
    
    def getTranslate(kw):
        '''
        模拟有道翻译,
        :param kw: 关键字
        :return: 翻译结果
        '''
        # 设置请求头
        header = {
            "User-Agent": '''Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'''
        }
        # 设置表单数据
        data = {
            "i": kw,
            "from": "AUTO",
            "to": "AUTO",
            "smartresult": "dict",
            "client": "fanyideskweb",
            "salt": "1530692157778",
            "sign": "86981073c4755432afabd9680e3127ab",
            "doctype": "json",
            "version": "2.1",
            "keyfrom": "fanyi.web",
            "action": "FY_BY_REALTIME",
            "typoResult": "false",
        }
        data = urllib.parse.urlencode(data).encode("utf-8")
    
        # url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
        # {"errorCode":50},使用上面这个url会报错
        url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    
        #构建请求体
        req = urllib.request.Request(url,data=data,headers=header)
        response = urllib.request.urlopen(req)
        # 字符串转成字典
        retList = eval(response.read().decode("utf-8"))
        # print(ret)
        # print(retList["translateResult"])
        retL = []
        for ret in retList["translateResult"]:
            # print(ret[0]["tgt"])
            retL.append(ret[0]["tgt"])
        return retL
    
    if __name__ == '__main__':
        kw = input("输入要翻译的词语:")
        response = getTranslate(kw)
        print(response)
    
    

    这里写图片描述

    后记

    【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

    也可加我微信【1257309054】,拉你进群,大家一起交流学习。
    如果文章对您有帮助,请我喝杯咖啡吧!

    公众号

    公众号

    赞赏码

    关注我,我们一起成长~~

    展开全文
  •  概念:urllibPython自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求。其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urlliburllib2。 使用流程: ...
  • urllib是学习python爬虫需要掌握的最基本的库,它主要包含四个模块: urllib.request基本的HTTP请求模块。可以模拟浏览器向目标服务器发送请求。 urllib.error 异常处理模块。如果出现错误,可以捕捉异常。 urllib....
  • 002:Python爬虫Urllib库全面分析

    千次阅读 多人点赞 2019-01-20 21:38:28
    Python中有一个功能强大,用于操作URL,并且在爬虫中经常使用的库、就是Urllib库。 (在python2的时候,有Urllib库,也有Urllib2库。Python3以后把Urllib2合并到了Urllib中) 合并后,模块中有很多的位置变动。我...
  • import urllib.parse import urllib.request data = bytes(urllib.parse.urlencode({'page': 1}), encoding='GBK') response = urllib.request.urlopen('http://www.lingzhilab.com/resources/getAllRes', data=...
  • import urllib.request # 1.指定url url = 'https://www.sogou.com/web?query=周杰伦' ''' 2.发起请求:使用urlopen函数对指定的url发起请求, 该函数返回一个响应对象,urlopen代表打开url ''' response = urllib....
  • Python爬虫urllib显示下载进度

    千次阅读 2018-11-20 10:14:50
    /usr/bin/python #encoding:utf-8 import urllib import os img="http://vip.zuiku8.com/1810/妖精的尾巴最终季-01.mp4" def Schedule(a,b,c): ''' a:已经下载的数据块 b:数据块的大小 c:远程文件的...
  • import urllib2 import cookielib url = "http://www.baidu.com" print "第一种方法" response1 = urllib2.urlopen(url) print response1.getcode() print len(response1.read()) print &...
  • urllib2 的一些函数在更新之后,调用发生了变化,改为放入到urllib.request的子库当中: Previous Replacement Urllib2.Urlopen() urllib.request.urlopen() Urllib2.Request() urllib.request....
  • 最近借了几本爬虫的书,了解了urllib库的基本用法,但是却出现了这个问题,如图    运用urllib库请求12306解码后下面空了一行,啥都没出现,但是如果爬取python官网却可以出现爬取的代码。不知道为什么会有这种...
  • 爬虫前,需要知道这两个知识点!!! 字符串转字节类型 str --> bytes encode() 字节类型转字符串 bytes --> str decode() 1.以一个简单的例子讲解urllib.request方法 read 读取相应内容,内容 geturl 获取...
  • 把玩之python爬虫urllib2

    2016-06-17 08:20:39
     urllib2是python的一个获取URLs的组件,通过urlopen函数的形式来提供了一个非常简单的接口,焗油不同协议获取URLs的能力,urllib2提供了一个比较复 杂的接口来处理情况,例如:基础验证,cookies,代理和其他。  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,261
精华内容 4,904
关键字:

python爬虫urllib

python 订阅
爬虫 订阅