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)
相关推荐
灯澜忆梦33 分钟前
GO_文件处理---字符串操作
开发语言·golang
-银雾鸢尾-38 分钟前
里氏替换原则
开发语言·c#·里氏替换原则
এ慕ོ冬℘゜39 分钟前
JavaScript 数组核心方法实战|新增元素 + 数组转字符串 零基础详解
开发语言·javascript·ecmascript
一个初入编程的小白41 分钟前
C语言:函数栈帧与销毁
c语言·开发语言
czhc114007566343 分钟前
718:public internl class;partial []
开发语言
smj2302_7968265244 分钟前
解决leetcode第3989题网格中保持一致的最大列数
python·算法·leetcode
临床数据科学和人工智能兴趣组1 小时前
R语言因其强大的统计功能、灵活的编程环境、活跃的社区支持和强大的R扩展包,迅速成为统计学和数据科学领域的首选工具之一
开发语言·数据分析·r语言·r语言-4.2.1
__log1 小时前
弱网环境下的“生命线“:从AI流式响应到大文件上传的稳定性
开发语言·人工智能·php
吴梓穆2 小时前
Python 基础 正则表达式
python
巧克力男孩dd2 小时前
Python超典型练习题(第一次作业)
开发语言·python·算法