前言
独行于尘世的轨迹,寻觅着灵魂的归宿,月影万变,寻一缕不变的柔光。
前置条件
默认有一定的Python基础
电脑存在Python环境
建议使用Py Charm IDE 官方推荐工具
依赖库
requests 简介
易用性:requests的设计哲学是让HTTP请求尽可能地简单。通过几行代码,你就可以发送GET、POST等HTTP请求,获取服务器响应。
全面的功能:支持自动处理重定向、cookies、认证以及各种HTTP方法,同时提供了丰富的请求和响应对象,允许精细控制和解析。
安装简便:只需一条命令pip install requests,即可在Python环境中安装requests库,快速开始网络编程。
BeautifulSoup4 简介
易用性:BeautifulSoup的API设计简洁,即便是编程新手也能快速上手,轻松地选择和操作文档中的元素。
智能解析:它能够自动将输入文档转换为Unicode编码,输出文档转换为UTF-8编码,处理不规范的HTML或XML文档时表现出极高的容错性。
多解析器支持:BeautifulSoup本身不直接解析文档,而是依赖于外部解析器,如lxml(推荐)、html5lib或Python的标准库html.parser,这给予用户灵活性选择最适合的解析方案。
强大的选择器:通过结合使用标签名、属性和CSS选择器,开发者可以精确地定位到需要的文档部分,提取数据。
文档导航:提供了丰富的属性和方法来遍历文档树,如.find(), .find_all(), .select()等,使得遍历和访问文档结构变得简单。
解析过程
安装依赖库
# 安装bs4
pip install beautifulsoup4
# 安装 requests
pip install requests
# 如果下载速度过慢 可以使用第三源安装 速度杠杠的 清华大学py高速源
# 安装bs4
pip install beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装 requests
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
代码示例
效果图
代码全片段(可直接运行)
# coding:utf-8
import requests
from bs4 import BeautifulSoup
from datetime import datetime
def get_curr_date():
current_time = datetime.now()
formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
return formatted_time
def pp(log):
print(f"{get_curr_date()} - {log}")
headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"Accept-Language": "zh-CN,zh;q=0.9",
"Cache-Control": "no-cache",
"Connection": "keep-alive",
"Pragma": "no-cache",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36",
}
cookies = {
}
url = "https://www.baidu.com/s"
params = {
"wd": "我要学爬虫"
}
pp("******************开始采集******************")
response = requests.get(url, headers=headers, cookies=cookies, params=params,timeout=10)
pp("******************采集完成开始解析******************")
pp("******************解析完成开始打印******************")
html = response.text
f_html = BeautifulSoup(html,'html.parser')
aa = f_html.select("h3.tts-title>a")
for a in aa:
pp(f"title : {a.text} - url:{a.get('href')}")
pp(f"******************打印完成 ,数量:{len(aa)}******************")
难点
代码属于入门级别,难度入门,需要注意的需要有一定的网络协议基础、前端h5基础等
结束语
文章代码作者自编,可直接运行👽👽👽
运行有问题可联系作者评论交流🤭🤭🤭
风是自由的,你也是自由🤠🤠🤠
欢迎一起交流学习☠️☠️☠️
有帮助请留下足迹 一键三连🥰🥰🥰
爬虫大佬勿喷,欢迎指正问题😈😈😈
后面会做一系列的爬虫文章,请持续关注作者🤡🤡🤡。