美文网首页
爬虫基础知识

爬虫基础知识

作者: Donald_32e5 | 来源:发表于2019-04-28 16:48 被阅读0次

    一、定义

    • 网络爬虫就是模拟浏览器发送网络请求,接受请求响应,一种按照一定的规则,自动的抓取互联网信息的程序。
    • 原则上,只要是浏览器(客户端)能做的事情,爬虫都能做

    二、流程

    三、requests的基本使用

    1、requests是Python的一个网络类库
    2、requests的作用就是发送网络请求,返回响应数据
    
    # 目标url
    url = 'https://www.baidu.com' 
    
    # 向目标url发送get请求
    response = requests.get(url)
    
    # 打印响应内容
    print(response.text)
    
    2、response的常用属性
    • reponse.text 响应体str类型
    • reponse.content 响应体bytes类型
    • reponse.status_code响应状态码
    • reponse.requests.headers响应对应的请求头
    • responde.headers 响应头
    • reponse.requests._cookies 响应对应的cookies
    • requests.cookies 响应cookies(经过了set-cookies动作)
    3、reponse.text 和reponse.content的区别
    • reponse.text

      • 类型:str
      • 解码类型:requests模块自动根据HTTP头部对响应的编码做出有根据的推测,推测文本编码
      • 如和修改编码方式: reposne.encoding='gbk'
    • reponse.content

      • 类型:bytes
      • 解码类型:没有指定
      • 如何修改编码方式: reponse.content.decode('uutf-8')
    • 获取网页源码的通用方式:
      1、reponse.content.decode()
      2、reponse.content.dexode('GBK')
      3、reposne.text
      以上三种方式,能够100%的解决所有的网页解码问题

    4、发送带参数的请求,有两种方式
    # 方式一:利用params参数发送带参数的请求
    import requests
    
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
    
    # 这是目标url
    # url = 'https://www.baidu.com/s?wd=python' 
    
    # 最后有没有问号结果都一样
    url = 'https://www.baidu.com/s?' 
    
    # 请求参数是一个字典 即wd=python
    kw = {'wd': 'python'} 
    
    # 带上请求参数发起请求,获取响应
    response = requests.get(url, headers=headers, params=kw) 
    
    # 当有多个请求参数时,requests接收的params参数为多个键值对的字典,比如 '?wd=python&a=c'-->{'wd': 'python', 'a': 'c'}
    
    print(response.content)
    
    # 方式二:直接发送带参数的url的请求
    import requests
    
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
    
    url = 'https://www.baidu.com/s?wd=python'
    
    # kw = {'wd': 'python'}
    
    # url中包含了请求参数,所以此时无需params
    response = requests.get(url, headers=headers)
    
    5、requests发送POST请求
    • 用法格式,
    # data为字典格式
    response = requests.post("http://www.baidu.com/",  data = data, headers=headers)
    
    6、使用代理
    • 用法格式:
    # proxies是字典格式
    proxies = { 
          "http": "http://127.0.0.1:12333", 
          "https": "https://127.0.1:12333", 
          }
    requests.get("http://www.baidu.com",  proxies = proxies)
    
    

    通过上图可以看出:

    • 正向代理:对于浏览器知道服务器的真实地址,例如VPN
    • 反向代理:浏览器不知道服务器的真实地址,例如nginx

    根据代理ip的匿名程度,代理IP可以分为下面四类:

    • 透明代理(Transparent Proxy):透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以查到你是谁。
    • 匿名代理(Anonymous Proxy):使用匿名代理,别人只能知道你用了代理,无法知道你是谁。
    • 高匿代理(Elite proxy或High Anonymity Proxy):高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。

    在使用的时候,毫无疑问使用高匿代理效果最好

    相关文章

      网友评论

          本文标题:爬虫基础知识

          本文链接:https://www.haomeiwen.com/subject/ntirnqtx.html