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 的基础内容介绍

python 复制代码
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:下载百度的一个图片
python 复制代码
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歌中的歌曲
python 复制代码
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. 各种错误代码

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

8. 伪装爬取内容

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

#伪装成百度进行爬取

python 复制代码
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中的内容

python 复制代码
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)
相关推荐
985小水博一枚呀20 分钟前
【对于Python爬虫的理解】数据挖掘、信息聚合、价格监控、新闻爬取等,附代码。
爬虫·python·深度学习·数据挖掘
大神薯条老师2 小时前
Python从入门到高手5.1节-Python简单数据类型
爬虫·python·深度学习·机器学习·数据分析
镜花照无眠6 小时前
Python爬虫使用实例-mdrama
开发语言·爬虫·python
小白学大数据13 小时前
User-Agent在WebMagic爬虫中的重要性
开发语言·爬虫·http
大神薯条老师1 天前
Python从入门到高手4.3节-掌握跳转控制语句
后端·爬虫·python·深度学习·机器学习·数据分析
wdxylb1 天前
Pyhton爬虫使用Selenium实现浏览器自动化操作抓取网页
爬虫·selenium·测试工具
菜鸡中的奋斗鸡→挣扎鸡2 天前
初始爬虫11
开发语言·爬虫·python
凡人的AI工具箱2 天前
15分钟学 Python 第35天 :Python 爬虫入门(一)
开发语言·数据结构·人工智能·后端·爬虫·python
新缸中之脑2 天前
ScrapeGraphAI 大模型增强的网络爬虫
爬虫
易辰君2 天前
python爬虫 - 初识爬虫
开发语言·爬虫·python