美文网首页
python内置爬虫请求模块-urllib

python内置爬虫请求模块-urllib

作者: livein80 | 来源:发表于2020-07-26 17:00 被阅读0次

1.爬虫请求模块urllib.request

  • urllib.request.urlopen('网址') 作用向一个网站发送请求并获取响应
    • 字节流

      • response.read() 获取服务器响应内容
      • response.getcode() 返回 HTTP响应码
      • response.geturl() 返回 是技术的URL(防止重新定向问题)
    • 字符串 response.read().decode('utff-8')

    • urllib.request.Resquest('网址',headers='字典')
      urlopen() 不支持重构user-agent

2.urllib.parse模块

  • 常用方法 urlencode(字典)
  • quote(字符串)(这个里面的参数是个字符串)

-2.1请求方式

  • GET 特点:查询参数在UURL地址中显示
  • POST
    • 在Request方法中添加data参数
      urllib.request.Request(url,data=data,headers=headers)
    • data : 表单数据以bytes类型提交,不能是str
 import ssl
 import urllib.request
 import urllib.parse
 context = ssl._create_unverified_context()
 headers={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
    }
  # 发起请求 获取响应
 req = urllib.request.Request(url,headers=headers) #重新构建一个Request请求
 res = urllib.request.urlopen(req,context=context) # 传入上下文参数:context,以解决证书无法验证问题
 html = res.read().decode('utf-8') # 获取文本形式上的内容
  • GET和POST时 需要对数进行url编码(urllib.parse.urlencode)

     key = input('请输入关键词 : ')
     self.data['i'] = key
     data = urllib.parse.urlencode(self.data)
     data_bytes = bytes(data,'utf-8')
     req = urllib.request.Request(self.base_url,data=data_bytes,headers=self.headers)
     res = urllib.request.urlopen(req)
     html = res.read().decode('utf-8')
    

相关文章

网友评论

      本文标题:python内置爬虫请求模块-urllib

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