本笔记根据B站教程学习
【【Python+爬虫】爆肝两个月!拜托三连了!这绝对是全B站最用心(没有之一)的Python+爬虫公开课程,从入门到(不)入狱 !】 https://www.bilibili.com/video/BV1d54y1g7db/?share_source=copy_web&vd_source=61190f68ab64f8d96c38c78f71703d91
HTTP请求
请求类别
分成两种请求
1.GET
2.POST
请求结构
1.请求行
网址/资源路径?查询参数1&查询参数2 协议版本
2.请求头
Host:
User-Agent: //客户端相关信息
Accept: //客户端接收的数据类型
3.请求体
客户端传给服务器的其它数据
HTTP响应
1.状态行
协议版本 状态码 状态消息
2.响应头
3.响应体
服务器想给客户的数据内容
Hello World
import requests
head = {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64)} #伪装请求头装成是正常浏览器
response = requests.get(http://books.toscrape.com/,headers=head)
print(response)
print(response.status_code) #状态码
print(response.ok) #bool值返回是否请求成功
HTML
建议去看文档和菜鸟教程
豆瓣电影排名爬取实战
import requests
from bs4 import BeautifulSoup
headers = {
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.82
} #伪装请求头装成是正常浏览器
for start_num in range(0,250,25): #因为一张页面有25个电影,所以后面网址传参start=每次增加25
response = requests.get(fhttps://movie.douban.com/top250?start={start_num},headers=headers) #这里是字符串加变量的方法
html = response.text #获取html网页源码
soup = BeautifulSoup(html,html.parser) #指定解析器解析 html 内容
all_titles = soup.find_all(span,attrs={class:title}) #找到html中所有span类型并且class值为title的元素(通过分析网页发现的)
for title in all_titles: #打印所有all_titles结构体中的内容
title_string = title.string #不要html结构的元素,只提取出元素中的string内容
if / not in title_string: #分析结果发现,带/的是电影原名不是译名,所以不打印这部分名字
print(title_string)