zoukankan      html  css  js  c++  java
  • 初识爬虫

    1.http:(1)当⽤用户在地址输⼊入了了⽹网址 发送⽹网络请求的过程是什什么

    (2)http的请求⽅方式

    get请求

    (1)⽐比较便便捷

    缺点:不不安全:明⽂文

    参数的⻓长度有限制

    post请求

    (1)⽐比较安全

    (2)数据整体没有限制

    (3)上传⽂文件

    put(不不完全的)

    delete(删除⼀一些信息)

    head(请求头)

    发送⽹网络请求(需要带⼀一定的数据给服务器器不不带数据也可以)

    请求头⾥里里⾯面requestheader

    返回数据:response

    (1)Accept:⽂文本的格式

    (2)Accept-Encoding:编码格式

    (3)Connection:⻓长链接 短链接

    (4)Cookie:验证⽤用的

    (5)Host:域名

    (6)Referer:标志从哪个⻚页⾯面跳转过来的

    (7)User-Agent:浏览器器和⽤用户的信息

    2.爬⾍虫⼊入⻔门:使⽤用代码模拟⽤用户 批量量的发送⽹网络请求 批量量的获取数据

    (1)爬⾍虫的价值:

    1.买卖数据(⾼高端的领域价格特别贵)

    2.数据分析:出分析报告

    3.流量量

    4.指数阿⾥里里指数,百度指数

    (3)合法性:灰⾊色产业

    政府没有法律律规定爬⾍虫是违法的,也没有法律律规定爬⾍虫是合法的

    公司概念:公司让你爬数据库(窃取商业机密)责任在公司

    (4)爬⾍虫可以爬取所有东⻄西?(不不是)爬⾍虫只能爬取⽤用户能访问到的数据

    爱奇艺的视频(vip⾮非vip)

    1.普通⽤用户 只能看⾮非vip 爬取⾮非vip的的视频

    2.vip 爬取vip的视频

    3.普通⽤用户想要爬取vip视频(⿊黑客)

    爬⾍虫的分类:(1)通⽤用爬⾍虫

    1.使⽤用搜索引擎:百度 ⾕谷歌 360 雅⻁虎 搜狗

    优势:开放性 速度快

    劣势:⽬目标不不明确

    返回内容:基本上%90是⽤用户不不需要的

    不不清楚⽤用户的需求在哪⾥里里

    (2)聚焦爬⾍虫(学习)

    1.⽬目标明确

    2.对⽤用户的需求⾮非常精准

    3.返回的内容很固定

    增量量式:翻⻚页:从第⼀一⻚页请求到最后⼀一⻚页

    Deep 深度爬⾍虫:静态数据:html css

    动态数据:js代码,加密的js

    robots:是否允许其他爬⾍虫(通⽤用爬⾍虫)爬取某些内容

    聚焦爬⾍虫不不遵守robots

    爬⾍虫和反扒做⽃斗争:资源对等 胜利利的永远是爬⾍虫

    爬⾍虫的⼯工作原理理:

    1.缺⼈人你抓取⽬目标的url是哪⼀一个(找)

    2.使⽤用python代码发送请求获取数据(java Go)

    3.解析获取到的数据(精确数据)

    (1)找到新的⽬目标(url)回到第⼀一步(⾃自动化)

    4.数据持久化

    python3(原⽣生提供的模块):urlib.rquest:

    (1)urlopen :

    1.返回response对象

    2.response.read()

    3.bytes.decode("utf-8")

    (2)get:传参

    1.汉字报错 :解释器器ascii没有汉字,url汉字转码

    (3)post

    (4)handle处理理器器的⾃自定义

    (5)urlError

    python(原⽣生提供的):urlib2

    接下来将的知识点:

    5.request(第三⽅方)

    6.数据解析:xpath bs4

    7.数据存储

    import urllib.request
    
    def load_data():
        url = "http://www.baidu.com/"
        #get的请求
        #http请求
        #response:http相应的对象
        response = urllib.request.urlopen(url)
        print(response)
        #读取内容 bytes类型
        data = response.read()
        print(data)
        #将文件获取的内容转换成字符串
        str_data = data.decode("utf-8")
        print(str_data)
        #将数据写入文件
        with open("baidu.html","w",encoding="utf-8")as f:
            f.write(data)
        #将字符串类型转换成bytes
        str_name = "baidu"
        bytes_name =str_name.encode("utf-8")
        print(bytes_name)
    
        #python爬取的类型:str bytes
        #如果爬取回来的是bytes类型:但是你写入的时候需要字符串 decode("utf-8")
        #如果爬取过来的是str类型:但你要写入的是bytes类型 encode(""utf-8")
    load_data()
    import urllib.request
    import urllib.parse
    import string
    
    def get_method_params():
    
        url = "http://www.baidu.com/s?wd="
        #拼接字符串(汉字)
        #python可以接受的数据
        #https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3
    
        name = "美女"
        final_url = url+name
        print(final_url)
        #代码发送了请求
        #网址里面包含了汉字;ascii是没有汉字的;url转译
        #将包含汉字的网址进行转译
        encode_new_url = urllib.parse.quote(final_url,safe=string.printable)
        print(encode_new_url)
        # 使用代码发送网络请求
        response = urllib.request.urlopen(encode_new_url)
        print(response)
        #读取内容
        data = response.read().decode()
        print(data)
        #保存到本地
        with open("02-encode.html","w",encoding="utf-8")as f:
            f.write(data)
        #UnicodeEncodeError: 'ascii' codec can't encode
        # characters in position 10-11: ordinal not in range(128)
        #python:是解释性语言;解析器只支持 ascii 0 - 127
        #不支持中文
    
    get_method_params()
  • 相关阅读:
    Python文件基础
    Python字符串基础操作
    Python ===if while for语句 以及一个小小网络爬虫实例
    Python 常用函数大体分类
    Atlas安装及配置
    (转)VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息“
    (转)数据库中视图的作用
    (转)ASP.NET MVC 学习第一天
    (转)介绍几个C#正则表达式工具
    关于textbox.attributes["value"]的问题
  • 原文地址:https://www.cnblogs.com/sunBinary/p/10555630.html
Copyright © 2011-2022 走看看