Python之爬虫

目录

HTTP请求

HTTP:HypertextTransferProtcol 超文本传输协议

1、请求行

python 复制代码
POST/user/info?new_user=true HTTP/1.1

#资源了路径user/info 查询参数new_user=true 协议版本HTTP/1.1

2、请求头

python 复制代码
Host:www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; ×64)

#host指主机域名

python 复制代码
User-Agent:curl/7.77.0

#告知服务器客户端的相关信息

python 复制代码
Accept:*/*

#客户端想接受的响应数据是什么类型

3、请求体

python 复制代码
{"username":"刘威","email":"liuwei@hotmail.com"}

HTTP响应

python 复制代码
# 状态行
HTTP/1.1 200 OK
# 响应头
Date:Fri,27Jan 2023 02:10:50 GMT
Content-Type:text/html;charset=utf-8
# 响应体
<!DOCTYPE html>
	<head><title>首页</title></head>
	<body><h1>hello world!</h1></body>
</html>

获得页面响应

pip install requests

python 复制代码
import requests
head = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; ×64)" }
response=requests.get("http://books.toscrape.com")
if response.ok:
    print(response.text)
else:
    print("error")

伪装用户访问

python 复制代码
import requests
headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.184.400 QQBrowser/11.3.5190.400"
}
response=requests.get("https://movie.douban.com/top250",headers=headers)
print(response.text)

打包数据

pip install bs4

python 复制代码
from bs4 import BeautifulSoup
import requests

content=requests.get("https://movie.douban.com/top250").text
# 传入BeautifulSoup的构造函数里
# 解析器
soup=BeautifulSoup(content,"html.parser")
# 能根据标签、属性等找出所有符合要求的元素
all_prices=soup.findAll("span",attrs={"class","title"})
for price in all_prices:
    print(price.string) #会把标签包围的文字返回给我们

爬取豆瓣top250

python 复制代码
from bs4 import BeautifulSoup
import requests
# 伪装用户访问
headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.184.400 QQBrowser/11.3.5190.400"
}
# 根据url格式进行自动翻页
for start_num in range(0,250,25):   
    response=requests.get(f"https://movie.douban.com/top250?start={start_num}",headers=headers) #我们就可以用f字符串去格式化
    html=response.text	#打包html
    soup=BeautifulSoup(html,"html.parser")	#用html方式解析
    all_title=soup.findAll("span",attrs={"class":"title"})	#限制特定条件
    for title in all_title:	#遍历所需内容
        title_string=title.string
        if "/" not in title_string:	#限制内容显示
            print(title_string)
相关推荐
醉舞经阁半卷书18 分钟前
Python机器学习常用库快速精通
人工智能·python·深度学习·机器学习·数据挖掘·数据分析·scikit-learn
hoiii1879 分钟前
16APSK/32APSK调制解调MATLAB仿真实现
开发语言·matlab·fpga开发
feifeigo12334 分钟前
基于MATLAB的情感语音模板培训与识别实现方案
开发语言·matlab
JH307343 分钟前
Java Spring中@AllArgsConstructor注解引发的依赖注入异常解决
java·开发语言·spring
码农水水1 小时前
米哈游Java面试被问:机器学习模型的在线服务和A/B测试
java·开发语言·数据库·spring boot·后端·机器学习·word
开源技术1 小时前
Violit: Streamlit杀手,无需全局刷新,构建AI面板
人工智能·python
C++ 老炮儿的技术栈1 小时前
C/C++ 中 inline(内联函数)和宏定义(#define)的区别
开发语言·c++·git·算法·机器人·visual studio
我什么都学不会2 小时前
Python练习作业2
开发语言·python
b2077212 小时前
Flutter for OpenHarmony 身体健康状况记录App实战 - 健康目标实现
python·flutter·harmonyos
henujolly2 小时前
ethers.js读取合约信息
开发语言·javascript·区块链