zoukankan      html  css  js  c++  java
  • 爬虫的概述以及使用(urllib发送请求)

    一、爬虫概述

      爬虫,就是给网站发起请求,并从响应中提取需要的数据的自动化程序。

      1.发起请求,获取响应

        通过http库,对目标站点进行请求。等同于自己打开浏览器,输入网址

        通常库:urllib、urllib3、requests

        服务器会返回请求的内容,一般为:html、二进制文件(视频,音频)、文档,json字符串等

      2.解析内容

        寻找自己需要的信息,就是利用正则表达式或者其他库提取目标信息

        常用库:re、beautifulsoup4

      3.保存数据

        将解析得到的数据持久化到文件或者数据库中

    二、使用urllib发送请求

      request.urlopen()                                                                                # 这是最基本的反爬措施                                               

           from urllib import request                                                                       from urllib import request  

      url = "http://www.baidu.com"                   url = "http://www.dianping.com"

      res = request.urlopen(url)  #访问url并获取响应           header = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"}

      print(res.geturl())  #获取主机地址                 req = request.Request(url,headers=header)

      print(res.getcode())  #获取请求状态码               res = request.urlopen(rep) #访问url并获取响应

      print(res.getinfo())  #获取响应头                   print(res.geturl())  #获取主机地址

      html = res.read() #获取的是字节形式的内容              print(res.getcode())  #获取请求状态码

      html.decode("utf-8") #解码                    print(res.getinfo())  #获取响应头 

      print(html)                            html = res.read() #获取的是字节形式的内容

                                        html.decode("utf-8") #解码

          运行程序中的错误以及解决方法:(上面直接用utf-8进行解码没有成功报错了,改成下面这样就好了)

             from urllib import request

       from io import BytesIO
       import gzip

       url = "http://www.baidu.com"
       res = request.urlopen(url) #获取响应

       print(res.info()) #响应头
       print(res.getcode())
       print(res.geturl())

       html = res.read()
       buff = BytesIO(html)
       f = gzip.GzipFile(fileobj=buff)
       htmls = f.read().decode('utf-8')
       #html = html.decode("utf-8")
       print(htmls)

            下面爬虫得到的结果如图:

  • 相关阅读:
    一步步构建大型网站架构
    IIS访问设置
    如何删除windows中的服务
    IIS下对WebConfig加密后无法访问网站
    ConfigurationManager不认的问题
    ORA12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
    PostgreSQL中表和字符串大写的问题
    ASP.NET中注册客户端脚本的三种方式
    装箱(boxing)和拆箱(unboxing)
    windows开启防火墙后IIS下的网站外网无法访问
  • 原文地址:https://www.cnblogs.com/renleiblog/p/12587665.html
Copyright © 2011-2022 走看看