python爬虫 day01

python爬虫 day01

1.http

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

  (2)http 的请求方式:

    get 请求: 比较便捷  缺点:不安全;明文  参数的长度有限制

    post请求:比较安全  数据整体没有限制  上传文件:put(不完全的);delete(删除一些信息)  发送网络请求  请求头里面 requesrtheader  返回数据:response

    head(请求头):accept:文本的格式  accept-Encoding:编码格式  Connection:长链接 短连接  Cookie:验证用的  Host:域名  Referer:标志从哪个页面跳转过来的  User-Agent:浏览器和用户的信息 

2.爬虫的价值

  (1)数据的买卖:数据分析:出分析报告  流量

  (2)阿里指数;百度指数

  (3)合法性:灰色产业

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

    公司概念:公司让你怕数据库(窃取商业机密) 违法

  (4)爬虫只可以爬取用户能访问到的数据

    爱奇艺的视频(VIP 和 非VIP)

    普通用户  只能看非VIP的 爬取非VIP的视频

    VIP 爬取VIP的视频

    普通用户想要爬取VIP的视频(黑客)

3.爬虫的分类

  (1)通用爬虫

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

      优势:开放性拉速度快    劣势:目标不明确

  (2)聚焦爬虫

    1.目标明确

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

    3.返回的内容很固定

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

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

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

      robots:是否允许其他爬虫(通用爬虫)爬取某些内容    聚焦爬虫不遵守robots

      爬虫和反爬虫作斗争:资源对等,胜利的永远是爬虫

3.爬虫的工作原理

  确认你抓取目标的url是哪一个(url)

  使用python代码发送请求获取数据(Java   Go)

 

以下是今天练习的代码

import urllib.request

def load_data():
    url = "http://www.baidu.com/"
    # get请求
    # http请求
    # respinse: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(str_data )
    # 讲字符串转化成 bytes 类型
    str_name = "baidu"
    bytes_name = str_name.encode("utf-8")
    print(bytes_name)

    # python爬取的类型:str bytes
    # 如果爬取回来的是 bytes 类型,但是写入需要输入 str :decode("utf-8")
    # 如果爬取回来的是 str 类型,但是写入需要输入 bytes :encode ("utf-8")

load_data()