• 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:

  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/xuxaut-558/p/10071949.html
Copyright © 2020-2023  润新知