第一章 认识爬虫

1.爬虫
- day01:
- 爬虫基本原理
- requests模块
- BeautifulSoup4

    - day02:
        - BeautifulSoup4
        - selenium

    - day03:
        - selenium
        - 写一些爬虫demo
        - 破解登录滑动验证码

    - day04:
        - scrapy

    - day05:
        - scrapy

一 爬虫基本原理:
1.什么是爬虫?
- 爬取数据

- 什么是互联网?
    - 互联网是由一堆网络设备,将世界上所有的电脑互联到一起;

2.为什么要使用爬虫技术?
    - requests 模块底层帮我们封装好了socket套接字,我们只需要关注http协议的通信流程;

    - 普通用户获取数据:
        - 打开浏览器,输入网址
        - 访问目标网站
        - 目标网站将数据返回给浏览器
        - 浏览器将数据进行渲染
        - ctrl + c 、 ctrl + v

    - “爬虫程序”获取数据:
        - 模拟浏览器往目标网站发送请求:
            - 请求库
                - requests模块
                - selenium模块

        - 获取目标网站返回的响应数据
            - 服务端会自动将数据返回,无需通过代码实现

        - 解析并提取有价值的数据
            - 解析模块:
                - re正则模块
                - BeautifulSoup4解析库: bs4
                - xpath解析语法: 通过文档树,查找规则
                - selector属性选择解析库: css

        - 保存到数据库、或者本地
            - 存储库:
                - MySQL
                - redis
                - mongodb
                - file

   - 爬虫全过程:
        - 发送请求
        - 获取响应数据
        - 解析并提取数据
        - 保存数据

   - 爬虫三部曲(*******):
        1.发送请求(*******)
            - 先分析目标网站的http协议请求流程
            - 再写代码

        2.获取数据
        3.保存数据

   - 安装
       pip3 install requests
  • 分析http协议请求流程:

    • 谷歌浏览器自带的开发者工具(推荐使用):

      • GET:
        • 请求url:
        • 请求方式:
          • Request Method: GET
        • 响应头(请求后,服务端返回的数据):
          • set-cookies: 服务端告诉浏览器要保存cookies
          • Location: 服务端告诉浏览器需要立马跳转的url地址
        • 请求头(携带访问目标服务端的数据):
          • Cookie
          • user-agent: 浏览器凭证,服务端有可能通过它做反扒
          • Referer: 当前url,上一次访问的url地址;
        • 请求参数:Params
      • POST:
        • 请求url:
        • 请求方式:
          • Request Method: POST
        • 响应头(请求后,服务端返回的数据):
          • set-cookies: 服务端告诉浏览器要保存cookies
          • Location: 服务端告诉浏览器需要立马跳转的url地址
        • 请求头(携带访问目标服务端的数据):
        • 请求体:
          • 明文用户名:
            • 正确用户名
          • 正确密文pwd:
            • OQUoK471BPXLSQbQ3rKKpbYJZ/x8zgZ91LVs4Bw6sKoNeuJH9KoOkac0mhDiZ/H3n1Adxq1g/tgSD3EEhreqVoxJMO3VxqYH5LDlHR0U0gxeGpeuTaHGKWE4aun6vxVWjYIJcfAmQ3/b2JUqGawYcM9xtJZPrhPU86u/1i7e3DM=
    • fildder

'''
1.发送请求:
    - pip3 install requests
'''

# import requests
# from urllib.parse import urlencode

# # 1.请求url,请求方式GET
# url = 'https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3'
#
# # 组织请求头信息
# headers = {
#     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
#     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
# }
#
# # 2.通过requests模块发送GET请求
# # 往url地址发送请求,并得到一个返回值,赋值给response变量
# # response == response 对象
# response = requests.get(url, headers=headers)
#
# print(response.status_code)  # 200成功
# # 获取响应文本
# print(response.text)
#
# with open('baidu.html', 'w', encoding='utf-8') as f:
#     f.write(response.text)



# demo2
# import requests
# from urllib.parse import urlencode
#
# # 1.请求url,请求方式GET
# url = 'https://www.baidu.com/s?' + urlencode({'wd': '美女'})
#
# # 组织请求头信息
# headers = {
#     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
#     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
# }
#
# # 2.通过requests模块发送GET请求
# # 往url地址发送请求,并得到一个返回值,赋值给response变量
# # response == response 对象
# response = requests.get(url, headers=headers)
#
# print(response.status_code)  # 200成功
# # 获取响应文本
# print(response.text)
#
# with open('meinv.html', 'w', encoding='utf-8') as f:
#     f.write(response.text)



# demo3
# import requests
#
# # 1.请求url,请求方式GET
# url = 'https://www.baidu.com/s?'
#
# # 组织请求头信息
# headers = {
#     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
#     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
# }
#
# # 2.通过requests模块发送GET请求
# # 往url地址发送请求,并得到一个返回值,赋值给response变量
# # response == response 对象
# response = requests.get(url, headers=headers, params={'wd': '美女'})
#
# print(response.status_code)  # 200成功
# # 获取响应文本
# print(response.text)
#
# with open('girl.html', 'w', encoding='utf-8') as f:
#     f.write(response.text)

猜你喜欢

转载自www.cnblogs.com/demiao/p/12122141.html