zoukankan      html  css  js  c++  java
  • Python爬虫

    一、python 连接测试URL

    1. 运行环境: python3.7  win7x64
    2. 使用工具: VS Code
    3. python 第三方库: requests (自行安装 >>> cmd --->pip install requests, 具体不做介绍)
    4. requests 库简介
    requests 库的网页请求函数
    函数 说明
    get(url [, timeout=n]) 对应HTTP的GET方式,设定请求超时时间为n秒
    post(url, data={'key':'value'}) 对应HTTP的POST方式,字典用于传输客户数据
    delete(url) 对应HTTP的DELETE方式
    head(url) 对应HTTP的HEAD方式
    options(url) 对应HTTP的OPTIONS方式
    put(url, data={'key':'value'}) 对应HTTP的PUT方式,字典用于传输客户数据

    其中,最常用的是get方法,它能够获得url的请求,并返回一个response对象作为响应。有了响应对象,就能为所欲为了,你觉得呢  ^x^

    response对象的属性
    属性 说明
    status_code HTTP请求的返回状态(???咨询一下)
    encoding HTTP响应内容的编码方式
    text HTTP响应内容的字符串形式
    content HTTP响应内容的二进制形式
    response对象的方法
    方法 说明
    json() 若http响应内容中包含json格式数据, 则解析json数据
    raise_for_status() 若http返回的状态码不是200, 则产生异常

     5. 好了,我们开工 >>>

    ① 导入库

    from requests import get

    ② 设定url, 并使用get方法请求页面得到响应

    url = "http://www.baidu.com"
    r = get(url, timeout=3)
    print("获得响应的状态码:", r.status_code)
    print("响应内容的编码方式:", r.encoding)

    运行结果:

    获得响应的状态码: 200
    响应内容的编码方式: ISO-8859-1

     ③ 获取网页内容

    url_text = r.text
    print("网页内容:", r.text)
    print("网页内容长度:", len(url_text))

    运行结果:

    网页内容: <!DOCTYPE html><!--STATUS OK--><html> <head> ... &nbsp;京ICP证030173号&nbsp; ... </body> </html>

    网页内容长度: 2381

    惊不惊讶? 激不激动? 好不好玩? >>> 好吧,如果看到我上面 标蓝 加粗 不明字体,你可能会 》》》问  》》》为什么?

    还记得上面的编码方式吗?没错,就是他!!!

    这是因为HTML代码也有自己的编码方式,我们需要使用相同的编码方式。下图是HTML语言的编码方式设置

    知道了原因,那就好搞了!

    ④ 重新获取网页内容

    r.encoding = "utf-8"
    url_text = r.text
    print("网页内容:", r.text)
    print("网页内容长度:", len(url_text))

    运行结果:

    网页内容: <!DOCTYPE html> <!--STATUS OK--><html> <head> ... 意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

    网页内容长度: 2287

     很明显,这次可以了 ^v^

    二、python 疯狂连接URL

    1.  使用上述的连接测试 "经验", 找个网站进行疯狂连接
    2. 在此,选取搜狗网站
    3. 上代码
    复制代码
    url = "http://www.sogou.com" # 搜狗
    for i in range(200):
        print("Test %d:" % (i+1), end=" ")
        response = get(url, timeout=5)
        # 判断连接状态
        if response.status_code == 200:
            print("Conncect successful!")
        else:
            print("Conncect UNsuccessful!")
    复制代码

    运行结果:

    Test 1: Conncect successful!
    Test 2: Conncect successful!
    Test 3: Conncect successful!
    Test 4: Conncect successful!
    Test 5: Conncect successful!

                        ................

    Test 199: Conncect successful!
    Test 200: Conncect successful!

    结果有200行。

  • 相关阅读:
    [C++] socket
    [C++] socket
    2014-3-16 星期天 晴[改变生活规律,稳中求进]
    [C++] socket
    [C++] socket
    [ACM_水题] Yet Another Story of Rock-paper-scissors [超水 剪刀石头布]
    easyui datagrid如何获取到每行的文本框
    JS传递数组到后台
    如何将js的object对象传到后台--->JavaScript之对象序列化
    EasyUI常用控件禁用方法
  • 原文地址:https://www.cnblogs.com/abing123/p/10907735.html
Copyright © 2011-2022 走看看