1.最简单的小爬虫实例
# 爬虫: 通过编写程序获取互联网上的资源
# 例如:百度
# 需求: 用程序模拟浏览器,输入一个网址,从该网址中获得资源或者内容
# python搞定以上需求非常简单
from urllib.request import urlopen # 从urllib库的request库中导入urlopen包
url = "http://www.baidu.com" # 设置爬取的url地址
resp = urlopen(url) # 将url地址响应的内容反馈到resp上,urlopen模拟浏览器打开网址
# 将resp即url的内容写入到mybaidu.html文件中
with open("mybaidu.html", mode="w", encoding="utf-8") as f:
# 以utf-8格式(即decode方法)读入(即read方法)resp中的内容
# decode方法:字节转字符串,否则中文会是乱码
f.write(resp.read().decode("utf-8"))
print("over!")
2.Web请求过程剖析
# 1.服务器渲染:
# 在服务器那边直接把数据和html整合在一起,统一返回给浏览器,
# 在页面源代码中,能看到数据
# 2.客户端渲染:
# 第一次请求服务器只要一个html骨架,第二次请求拿到数据,进行数据展示,
# 在页面源代码中,看不到数据
# 熟练使用浏览器抓包工具(F12)
3.Http协议
# Http协议: 直白点就是浏览器和服务器之间的数据交互遵守的协议
# Http协议把一条消息分为三大块内容,无论是请求还是响应都是三块内容
# 请求:
# 1 请求行 -> 请求方式(get/post) 请求url地址 协议
# 2 请求头 -> 放一些服务器要使用的附加信息
# 3 请求体 -> 一般放请求参数
# 响应:
# 1 响应行 -> 协议 状态码(200/404)
# 2 响应头 -> 放一些客户端要使用的附加信息
# 3 响应体 -> 服务器返回的真正客户端要用的内容(html、json)等
# 请求头中最常见的一些内容(爬虫需要):
# 1 User-Agent: 请求载体的身份标识(用啥发送的请求)
# 2 Refere: 防盗链(这次请求是从哪个页面来的? 反爬会用到)
# 3 cookie: 本地字符串数据流信息(用户登录信息,反爬的token)
# 响应头中最常见的一些内容:
# 1 cookie: 本地字符串数据信息(用户登录信息、反爬的token)
# 2 各种神奇的莫名其妙的字符串(这个需要经验,一般都是token字样,防止各种攻击和反爬)
# 请求方式:
# Get:显示提交
# Post:隐式提交