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

    requests 库只是一个工具,是工具就有它的使用方式,下面是使用 requests 库的 GET 方法请求网站URL的方法

    import requests
    response = requests.get("https://www.baidu.com/?tn=monline_3_dg")
    print(response.text)

    requests 库的通用代码函数框架

    # 爬取网页的通用代码框架(加入异常处理方法)
    import requests
    
    # 定义一个爬虫通用框架函数
    def getHTMLText(url):
        try:
            # 通过get方法请求url并设定响应时间
            r = requests.get(url,timeout=30)
            # 如果状态码不是200,引发 HTTPError 异常
            r.raise_for_status()
            # 解析返回数据的编码方式
            r.encoding = r.apparent_encoding
            # 输出返回网页的内容
            return r.text
        except:
            return "产生异常"

    更改请求头 headers,

    • 先构造一个键值对:kv = {"user-agent":"Mozilla/5.0"}?

    • 修改爬虫的头部信息: r = requests.get(url,headers = kv)

    • Mozilla/5.0:是一个标准的浏览器标识

    # 爬取网页的通用代码框架(加入异常处理方法)
    import requests
    
    # 定义一个爬虫通用框架函数
    def getHTMLText(url):
        try:
    kv
    = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"} # 通过get方法请求url并设定响应时间 r = requests.get(url,headers = kv,timeout=30) # 如果状态码不是200,引发 HTTPError 异常 r.raise_for_status() # 解析返回数据的编码方式 r.encoding = r.apparent_encoding # 输出返回网页的内容 return r.text except: return "产生异常"

    更改请求头爬取拉勾网实例

    import requests
    url = "https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput="
    try:
        kv = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"}
        r = requests.get(url,timeout=30,headers=kv)
        r.raise_for_status
        r.encoding = r.apparent_encoding
        print(r.text)
    except:
        print("请求异常")

    使用 post 方法发送请求

    # 发送 post 请求
    import requests
    url = 'https://www.lagou.com/zhaopin/Python/?labelWords=label'
    data = {
        "first":"true",
        "pn":1,
        "kd":"python"
    }
    kv = {'Referer':'https://www.lagou.com/zhaopin/Python/?labelWords=label',
         'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36'}
    r = requests.post(url,headers=kv,data=data)
    print(r.text)
    print(r.json())

    使用代理 IP?

    • 只需在(get 或 post )传递 proxies 参数就可以了实例代码如下:
      import requests
      url = 'http://httpbin.org/get'
      kv = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36'}
      pr = {
          "http":"101.64.32.100:808"
      }
      r = requests.get(url,headers=kv,proxies=pr)
      # 使用打开文件的方式
      with open('xx.html','w',encoding='utf-8') as fp:
          fp.write(r.text)

      requests处理cookie信息?

      import requests
      
      r = requests.get("https://www.baidu.com/")
      print(r.cookies)
      # 以字典的方式展示cookies信息
      print(r.cookies.get_dict())

      session?

      • 如果使用 requests ,要共享 cookie 的目的,那么可以 requests 库给我们提共的 session 对象,这里的 session 只是一个绘画对象而已

      登入人人网实例

      import requests
      
      url = "http://www.renren.com/PLogin.do"
      
      data = {"email":"970138074@qq.com","password":"pythonspider"}
      kv = {
          "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"
      }
      # 登入
      session = requests.Session()
      session.post(url,data=data,headers=kv)
      # 访问个人中心
      resp = session.get("http://www.renren.com/880151247/profile")
      with open('renren.html','w',encoding='utf-8') as fp:
          fp.write(resp.text)

      要获取网站上的视频或图片就将获取的内容返回为二进制格式,实例如下:

      import requests
      response = requests.get('https://github.com/favicon.ico')
      print(type(response.text),type(response.content))
      print(response.text)
      # content 是获取内容的二进制内容
      print(response.content)

      有时候我们获取的内容格式为 json 格式可以这样解析

      import requests
      response = requests.get("http://httpbin.org/get")
      print(type(response.text))
      print(response.json())
      print(type(response.json()))

      以下是 requests 库的各种请求的返回内容

      import requests
      response = requests.get('https://www.baidu.com/?tn=monline_3_dg')
      # 打印response的类型
      print(type(response))
      # 查看返回的状态码
      print(response.status_code)
      # 打印返回的值的属性
      print(type(response.text))
      # 打印返回的值
      print(response.text)
      # 查看返回的cookies值
      print(response.cookies)
      import requests
      requests.post('https://www.baidu.com/?tn=monline_3_dg')
      requests.put('https://www.baidu.com/?tn=monline_3_dg')
      requests.delete('https://www.baidu.com/?tn=monline_3_dg')
      requests.head('https://www.baidu.com/?tn=monline_3_dg')
      requests.options('https://www.baidu.com/?tn=monline_3_dg')
  • 相关阅读:
    mysql 常用命令行
    mysql常用命令
    Mac os安装wget
    linux下给文件夹或者目录赋权
    Python学习相关资料
    Mac常用的一些操作
    Mac os安装git及 git及githup的使用
    Linux磁盘占用100%解决方法
    page-break-after:always
    工具
  • 原文地址:https://www.cnblogs.com/yuanjian6/p/10166417.html
Copyright ? 2011-2022 开发猿


http://www.vxiaotou.com