week04day01(爬虫)

一. 爬虫

  • 只爬取公开的信息,不能爬取未公开的后台数据

1.爬虫的合法性

2. URL 

3. 协议

1.http的工作流程基于请求-响应模式:
 a.客户端发出请求:

  通常是通过浏览器向服务器发出一个http请求,请求包含以下几个部分

  • 请求头:Request URL 请求的统一资源定位符、Request Method请求方法(一般get  post)
  • 元信息(metadata):浏览器类型、编码格式、缓存指令等
  • 请求体:如果请求是post方法,可以携带表单等数据
 b. 服务器处理请求

   服务器会根据请求对请求进行相应的处理:

  • 解析请求
  • 检查请求是否合法
  • 根据请求的方法进行相应的操作,例如查询数据库
  • 准备响应
 c. 服务器响应客户端

   通过响应的方式下发给客户的

  • 状态行:http版本号,状态码(200 OK)以及相关说明
  • 响应头:内容类型、长度、缓存指令等
  • 响应体:包含响应的实际东西:例如html文档、图像、音频等数据
 d. 客户端处理响应

    浏览器解释响应并且对响应进行展示处理:

  • 解析响应
  • 根据状态码判断是否成功
  • 对响应体进行处理,渲染html页面

4. 爬虫的实现过程

1.获取网络数据
  • requests: 一个python第三方库,允许发送http请求,并且获取服务器的响应,常用于网页爬取
  • selenium:自动化测试工具,可以驱动浏览器自动运行程序,获取动态网页数据
2.解析数据
  • 正则(re模块):使用正则表达式,从原始的html中去提取想要的信息
  • bs4(beautifulSoup4):python库,使用css选择器等更加方便的提取html中的结构化数据
3.保存数据
  • csv: 以逗号分隔值的结构化数据保存方式
  • excel: 电子表格
  • 数据库        

5.HBuilderX前端项目

  1. css文件夹:

        存储的是网页样式文件, cascading(层叠) style sheets (层叠样式表)

  2.img文件:

        存储各种图片

  3. js文件夹:

        存储 java script 文件

  4. index.html

      

6.requests 的基础内容介绍

import requests

response = requests.get(url='https://sh.zu.anjuke.com/')
print(response.status_code)
# 200 成功
# 1xx 服务器返回信息代码   2xx成功状态码  3xx重定向代码   4xx 客户端错误代码  5xx服务器错误代码
print(response.headers)
# 响应头:包含了服务器返回的元数据,例如内容类型 编码方式 时间等
print(response.content)
# 响应的原始字节数据

print(response.text)
# 返回响应解码后的文本内容

#response.json()
#尝试转为json格式

'''
html   提供网页内容  超文本标签语言
css    设置内容的样式和布局    
js     复杂页面的变化

'''
        
例子1:下载百度的一个图片
import requests

resp = requests.get(url='https://www.baidu.com/img/flexible/logo/plus_logo_web_2.png')

if resp.status_code == 200:
    with open('baidu_logo.png','wb') as file_obj:
        file_obj.write(resp.content)
else:
    print(resp.status_code)
    print('下载资源失败')
例子2:  下载全民k歌中的歌曲
import requests
r = requests.get(url='https://tx.stream.kg.qq.com/njc-kgsvp/njc_0_50111_1021_d4f824ebe3aaffb5547e47ef83f98ffc73818fad.f0.m4a?vkey=11FB169B35DA40E3E1D3B5E7C0F65A98B872A8DE4B3B8F11C2BD140CC8CAFFDFEBC046A4D9F867AD91BA0A36D3F30A9ECC0CD1B4DAC2ACB98D687ACD98D5A25648FCF46E54F5C9CDAA0FF082573630790AF61D33F038D244&dis_k=902041b3dac037587b8b0bf1188dbeb3&dis_t=1708249125&fromtag=1021&ugcid=251181046_1586058630_671&nr=1')


if r.status_code == 200:
# 在pycharm中创建这个歌曲文件
    with open('song.m4a','wb') as song_k:
#  将歌曲内容写入创建的歌曲文件
        song_k.write(r.content)
else:
    print(r.status_code)
    print('失败')

7. 各种错误代码

'''
400 bad request 请求无法理解
401 unauthorized(未授权)
403 forbidden 禁止访问(理解请求但是拒绝你的请求)
404 not found 资源不存在
405 not allowed 服务器不允许
413 实体大小超出限制
418 I'm a teapot  你错了 ,牛头不对马嘴
'''

8. 伪装爬取内容

   因为豆瓣有些内容禁止爬取,但是未对百度禁止,可以伪装成百度,或者伪装成正常的网页进入两种方式

#伪装成百度进行爬取

import requests
r = requests.get(url='https://movie.douban.com/top250'
                 ,headers={'User-Agent': 'Baiduspider'})
print(r.status_code)
print(r.text)

# 伪装成正常网页, user-agent 后面的是网页检查中,network 中 header 最后面 user-agent中的内容

r = requests.get(url='https://movie.douban.com/top250'
                 ,headers={'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36'})
print(r.status_code)
print(r.text)

        

相关推荐

  1. week07day03(power bi dax公式 )

    2024-02-21 12:04:02       40 阅读
  2. week03day04(正则表达式2)

    2024-02-21 12:04:02       46 阅读
  3. week07day04(powerbi 概况指标体系)

    2024-02-21 12:04:02       42 阅读
  4. <span style='color:red;'>Day</span>-<span style='color:red;'>02</span>-<span style='color:red;'>01</span>

    Day-02-01

    2024-02-21 12:04:02      60 阅读
  5. <span style='color:red;'>Day</span>-<span style='color:red;'>01</span>-<span style='color:red;'>02</span>

    Day-01-02

    2024-02-21 12:04:02      44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 12:04:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 12:04:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 12:04:02       82 阅读
  4. Python语言-面向对象

    2024-02-21 12:04:02       91 阅读

热门阅读

  1. ARP攻击原理

    2024-02-21 12:04:02       52 阅读
  2. MYSQL 根据条件假删除多余的重复数据

    2024-02-21 12:04:02       50 阅读
  3. 面试浏览器框架八股文十问十答第三期

    2024-02-21 12:04:02       54 阅读
  4. package.json文件详解

    2024-02-21 12:04:02       58 阅读
  5. 纯css实现文字左右循环滚动播放效果

    2024-02-21 12:04:02       42 阅读
  6. 有哪几种行为会导致服务器被入侵

    2024-02-21 12:04:02       56 阅读
  7. 【Spring Boot Bean 注入详解】

    2024-02-21 12:04:02       47 阅读
  8. 12.27 校招 实习 内推 面经

    2024-02-21 12:04:02       53 阅读
  9. 编程笔记 Golang基础 011 控制台输入与输出

    2024-02-21 12:04:02       50 阅读
  10. 浙大版C语言题目集-函数题6

    2024-02-21 12:04:02       43 阅读
  11. uniapp 放大中间图标

    2024-02-21 12:04:02       53 阅读
  12. SpringBoot整理-Actuator

    2024-02-21 12:04:02       44 阅读
  13. 2024年云计算环境下安全好用的堡垒机推荐

    2024-02-21 12:04:02       50 阅读