zoukankan      html  css  js  c++  java
  • 131 乱码处理 验证码, session

    1 乱码处理:

    import requests
    from lxml import etree
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    }
    url = 'http://pic.netbian.com/4kmeinv/'
    response = requests.get(url=url,headers=headers)
    # response.encoding = 'utf-8'
    #检查请求到的源码数据的编码格式
    print(response.encoding)
    page_text = response.text
    
    tree = etree.HTML(page_text)
    li_list = tree.xpath('//div[@class="slist"]/ul/li')
    for li in li_list:
        img_src = li.xpath('./a/img/@src')[0]
        img_name = li.xpath('./a/img/@alt')[0]
    #     img_name = img_name.encode('gbk').decode('utf-8')
        img_name = img_name.encode('ISO-8859-1').decode('gbk')
        print(img_src,img_name)
    

    2 验证码 问题

    # https://blog.csdn.net/hfutzhouyonghang/article/details/81009760
    import requests
    from urllib import request
    from lxml import etree
    url = "https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx"
    headers = {
        "User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
        "Connection":"close"
    }
    session = requests.Session()
    #session对象和requests作用几乎一样,都可以进行请求的发送,并且请求发送的方式也是一致的,
    #session进行请求的发送,如果会产生cookie的话,则cookie会自动被存储到session对象中
    
    
    page_text = session.get(url=url, headers=headers).text
    tree = etree.HTML(page_text)
    img_src = "https://so.gushiwen.org" + tree.xpath('//*[@id="imgCode"]/@src')[0]
    page_text = session.get(url=img_src, headers=headers).content
    with open("./gushiwen.jpg", "wb") as f:
        f.write(page_text)
    img_code = get_code(1004, "./gushiwen.jpg")
    print(img_code)
    __VIEWSTATE = tree.xpath('//input[@id="__VIEWSTATE"]/@value')[0]
    __VIEWSTATEGENERATOR = tree.xpath('//input[@id="__VIEWSTATEGENERATOR"]/@value')[0]
    login_url = "https://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx"
    data = {
        "__VIEWSTATE":__VIEWSTATE,
        "__VIEWSTATEGENERATOR":__VIEWSTATEGENERATOR,
        "from":"http://so.gushiwen.org/user/collect.aspx",
        "email":"2689709108@qq.com",
        "pwd":"gyh412724",
        "code":img_code,
        "denglu":"登录",
    }
    # 模拟登陆
    # 使用Session对象提交请求,相当于在浏览器中连续操作网页,而如果直接使用```request.post()```,则相当没提交一次请求,则打开一个浏览器,我们在实际使用浏览器的经验告诉我们,这样是不行的。
    login_content = session.post(url=login_url, data=data, headers=headers).content
    with open('./gushiwen.html', "wb") as f:
        f.write(login_content)
        
    

    3  云打码 :  'http://api.yundama.com/api.php'

      使用流程:

    注册:普通用户和开发者用户
    登录:
    普通用户:查询余额
    开发者用户:
    创建一个软件:我的软件->添加一个新软件
    下载示例代码:开发文档->下载最新调用DLL->HTTPPython示例代码
    

    4  代理:   proxies:  https://jingyan.baidu.com/article/4f7d5712101fdd1a2119276c.html

    url = 'https://www.baidu.com/s?wd=ip'
    page_text = requests.get(url=url,headers=headers,proxies={'https':'103.110.184.149:55133'}).text
    
    with open('./ip.html','w',encoding='utf-8') as fp:
        fp.write(page_text)

       a : 代理的基本原理:

          代理实际上指的就是代理服务器,英文叫作proxy server,它的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站。在我们正常请求一个网站时,是发送了请求给Web服务器,Web服务器把响应传回给我们。如果设置了代理服务器,实际上就是在本机和服务器之间搭建了一个桥,此时本机不是直接向Web服务器发起请求,而是向代理服务器发出请求,请求会发送给代理服务器,然后由代理服务器再发送给Web服务器,接着由代理服务器再把Web服务器返回的响应转发给本机。这样我们同样可以正常访问网页,但这个过程中Web服务器识别出的真实IP就不再是我们本机的IP了,就成功实现了IP伪装,这就是代理的基本原理。

       b : 代理的作用:

        1)  突破自身IP访问限制,访问一些平时不能访问的站点。

        2) 访问一些单位或团体内部资源:比如使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。

        3) 提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度。

        4) 隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。对于爬虫来说,我们用代理就是为了隐藏自身IP,防止自身的IP被封锁。

  • 相关阅读:
    美丽的前端控件
    LeetCode:Rotate List
    VC++ 改动VMware BIOS、uuid_location、ethernet0_address等
    我们错过了那么多机会,怎么办
    怎样在centos安装python-mysql?
    eMMC ext4综述【转】
    闪存中的NorFlash、NandFlash及eMMC三者的区别【转】
    UFS和EMMC的区别--原理学习【转】
    EMMC 介绍【转】
    emmc和ssd的区别【转】
  • 原文地址:https://www.cnblogs.com/gyh412724/p/10246042.html
Copyright © 2011-2022 走看看