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)
相关推荐
q***31835 小时前
爬虫基础之爬取某基金网站+数据分析
爬虫·数据挖掘·数据分析
嫂子的姐夫9 小时前
23-MD5+DES+Webpack:考试宝
java·爬虫·python·webpack·node.js·逆向
HoneyMoose10 小时前
AI Bot 爬虫新势力
人工智能·爬虫
Miku1618 小时前
LangGraph+BrightData+PaperSearch的研究助理
爬虫·langchain·mcp
自学互联网18 小时前
python爬虫入门案例day05:Pexels
开发语言·爬虫·python
star_start_sky1 天前
住宅代理网络:我最近用来数据采集和自动化的小工具
网络·爬虫·自动化
小尘要自信2 天前
【详细步骤解析】爬虫小练习——爬取豆瓣Top250电影,最后以csv文件保存,附源码
爬虫
Python私教2 天前
第一个Python金融爬虫
爬虫·python·金融
野生工程师2 天前
【Python爬虫基础-3】数据解析
开发语言·爬虫·python
傻啦嘿哟2 天前
旅游网站爬虫实战:抓取携程酒店价格趋势全解析
爬虫·旅游