【Python】基础爬虫

文章目录

常用库urllib

  • request
    它是最基本的 HTTP 请求模块,可以用来模拟发送请求 就像在浏览器里输入网挝
    然后回车 样,只需要给库方法传入 URL 及额外的 数,就可以模拟实现这个过程了。

    • urlopen()

      import urllib.request
      from urllib3 import HTTPResponse
      
      response = urllib.request.urlopen('https://www.python.org')  # type: HTTPResponse
      

      返回值类型是HTTPResponse。它自带了很多获取网页信息的方法。其中包括
      【Python】基础爬虫
      常用的是read(),用来获取网页内容。status用来获取请求状态。

      import urllib.request
      from urllib3 import HTTPResponse
      
      response = urllib.request.urlopen('https://www.python.org')  # type: HTTPResponse
      print(response.read().decode ('utf-8'))
      

      urlopen的API如下:

       urllib.request.urlopen(url, data=None, [ timeout, ]*, cafile=None, capath=None, cadefault=False, context=None )
      

      其中url是必填项,其他都是可选参数

      • data
        如果要添加该参数,并且如果它是字节流编码格式的内容,即 bytes 类型,
        则需要通过 bytes ()方法转化 另外,如果传递了这个参数,则它的请求方式就不再是 GET 方式,而是POST方式。

        import urllib.request
        import urllib.parse
        from urllib3 import HTTPResponse
        
        data= bytes(urllib.parse.urlencode({'word':'hello'}), encoding='utf8')
        response = urllib.request.urlopen('http://httpbin.org/post',data=data)  # type: HTTPResponse
        print(response.read().decode ('utf-8'))
        
    • Request()
      urlopen满足了基本抓取,但是如果抓取需要我们传headers参数请求的时候,就要Request这个更强大的功能模块来实现。

      import urllib.request
      import urllib.parse
      from urllib3 import HTTPResponse
      
      requset=urllib.request.Request('https://www.baidu.com/')
      response=urllib.request.urlopen(requset) #type: HTTPResponse
      print(bytes(response.read()).decode('utf8'))
      
  • error
    异常处理模块,如果出现请求错误 可以捕获这些异常,然后进行重试或
    作以保证程序不会意外终止。

  • parse
    一个工具模块,提供了许多 URL 处理方法,比如拆分、解析 合并

  • robot parser
    主要是用来识别网站的 robots.txt 文件,然后判断哪些网站可以爬,哪些网站
    可以爬,它其实用得比较少