• Python爬虫流程


    Python爬虫流程

    主要分为三个部分 (1)获取网页-------->(2)解析网页(获取数据)--------->存储数据

    三个流程的技术实现

    1.获取网页
    -获取网页的技术基础:urllib、requests、selenium
    -获取网页的进阶技术:多线程抓取、登录抓取、突破ip限制和服务器抓取
    2.解析网页
    -解析网页的技术基础:re正则表达式、BeautifulSoup和xml
    -解析网页的进阶技术:解决中文乱码问题
    3.存储数据
    -存储数据的基本技术:存入txt文件和存入csv文件
    -存储数据的进阶技术:存储mysql、mongoDB数据库中

    搭建Python爬虫的平台

    • Python的安装
    • 集成环境Anaconda的安装
    • 使用pip工具安装第三方库

    urllib.request

    urllib中,request这个模块主要负责构造和发起网络请求,并在其中加入Headers,Proxy等。

    发起GET请求

    主要使用urlopen()方法发起请求

    from urllib import request
    resp = request.urlopen('http://www.baidu.com') type(resp)
    print(resp.read().decode()) 数据为二进制数据需转码

    发起POST请求

    urlopen()默认的访问方式为GET,当在urlopen()方法中传入data参数时,则会发起pose请求
    注意:传入的data数据需要为bytes格式
    设置timeout参数还可以设置超时时间,如果请求时间超出,那么会抛出异常
    from urllib import request
    resp = request.urlopen('http://httpbin.org', data=b'word=hello', timeout=10)
    print(resp.read().decode())

    添加Headers

    通过urllib发起的请求会有默认的一个Headers:"User-Agent":Python-urllib/3.6",指明请求是由urllib发送的。
    **所以遇到一些验证User-Agent的 网站时,我们需要自定义Headers,而这需要借助于urllib.request中的Request对象。
    from urllib import request
    url = 'http://httpbin.org/get'
    headers = {'user-agent': 'Mozilla/5.0 xxxxxxxxxxxxxxxxxxxxxx'}

    **需要使用url和headers生成一个Request对象,然后将其传入urlopen方法中
    req = request.Request(url, headers=headers)
    resp = request.urlopen(req)
    print(resp.read().decode())

    Request对象

    如上所示,urlopen()方法中不止可以传入字符串格式的url,也可以传入一个Request对象来扩展功能。Request对象如下所示:
    class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
    构造Request对象必须传入url参数, data数据和headers都是可选的。
    Request方法可以使用method参数来自由选择请求的方法,如PUT, DELETE等等,默认为GET方法。

    添加Cookie

    为了在请求时能带上Cookie信息,我们需要重新构造一个opener
    使用request.build_opener方法进行构造opener,将我们想要传递的cookie配置到opener中,然后使用这个opener的open方法来发起请求。

    User_Agent:

  • 相关阅读:
    一个js选项卡
    郁闷
    Object Literals
    typeof and instanceof
    比较好用的日期控件
    很炫的分页
    [转]ASP.NET Web.config配置文件的基本使用方法
    正则匹配 获取QQ空间日志
    漂浮窗(层)JS
    ASP.NET页面事件执行过程(完整版)
  • 原文地址:https://www.cnblogs.com/xuxaut-558/p/10071949.html
Copyright © 2020-2023  润新知