首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

爬虫简易说明

编程知识
2024年08月06日 20:53

想必大家都了解爬虫,也就是爬取网页你所需要的信息

相比于网页繁多的爬虫教程,本篇主要将爬虫分为四个部分,以便你清楚,代码的功能以及使用,这四部分分别为

  • 1.获取到源代码

  • 2.根据网页中的标签特征,获取源代码你所需要的部分

  • 3.想一下如何根据页面的逻辑将一系列的网页自动化抓取

  • 4.保存数据在xlsx等格式下

接下来说一下每一步的操作

1.获取源代码

现在有很多库来获取,不过现在普遍使用的是requests,我也是用它
导入方式为
import requests
这一部分很简单就一行代码
response = requests.get(url, params = params , headers = headers)
url就是页面的url,网址
params就是查询参数,可选
headers就是页面的请求头,也是可选,不过现在可以必过简易的反爬,主要要有user_agent和cookies

2.根据网页特征获取

这里我用到了BeautifulSoup
导入方式为
from bs4 import BeautifulSoup
具体使用就是
soup = BeautifulSoup(directory, 'html.parser')
其中'html.parser',它是 Python 内置的解析器,用于解析普通的 HTML 文档。

作用为:首先将html 变量中的 HTML 内容解析为一个 BeautifulSoup 对象 soup,使得后续可以利用 BeautifulSoup 提供的方法来方便地遍历和操作 HTML 文档的各个部分。

至于筛选标签,我主要我是使用了BeautifulSoup中的find和find_all两个函数,是用于查找符合指定标签名和属性条件的元素,这两个函数是有一定的区别的。
find用于查找文档中符合指定条件的第一个元素
find_all用于查找文档中符合条件的所有元素,并返回一个列表
举个例子
first_span = soup.find('span', class_='fl')
这里用find方法查找了第一个 标签,且其 class 属性为 'fl'。
span_list = soup.find_all('span', class_='fl')
这里用find_all 方法查找了所有 标签,且其 class 属性为 'fl' 的元素,将它们存储在 span_list 列表中。

3.自动化抓取
这一部分,得具体网页具体分析了
如一些页面的选择上,如?p=s这一些逻辑,将其写入脚本中,以实现自动化
https://www.xxx.html?p=s

4.保存数据
这部分用到了openpyxl库
导入方式:
from openpyxl import Workbook
首先看一下一下的代码

def create_execl(name):
    wb = Workbook()
    ws = wb.active
    ws.title = name
    excel_headers = ["疾病信息", "问诊类型", "病例url", "医生url", "医生简介", "医生擅长", "医生服务质量", "医生建议", "医生与患者交流"]
    ws.append(excel_headers)
    wb.save(name+".xlsx")

def write_back_execl(data, name):
    wb = load_workbook(name+".xlsx")
    ws = wb.active
    ws.append(data)
    wb.save(name+".xlsx")

然后我来对大家逐行解析

首先函数create_excel(name)是创建一个名为 name的Excel 文件,并写入表头信息。
1.wb = Workbook():创建一个新的 Workbook 对象,即一个新的 Excel 文件。
2.ws = wb.active:获取当前活动的工作表对象,这是一个 Worksheet 对象。
3.ws.title = name:将当前工作表的名称设置为传入的 name 参数。
4.excel_headers:定义了 Excel 表头的字段,包括 "疾病信息"、"问诊类型" 等。
5.ws.append(excel_headers):将表头信息添加到第一行。
6.wb.save(name+".xlsx"):保存 Excel 文件,文件名为 name.xlsx,这里的 name 是函数的参数。

函数write_back_excel(data, name),是用于向已存在的 Excel 文件中写入数据。
1.wb = load_workbook(name+".xlsx"):使用 load_workbook 函数加载已存在的 Excel 文件,文件名为 name.xlsx。
2.ws = wb.active:获取当前活动的工作表对象。
3.ws.append(data):将数据 data 追加到当前工作表的最后一行。
4.wb.save(name+".xlsx"):保存修改后的 Excel 文件。

反爬

除了基础代码外,我们还得了解一些反爬的技术

  • 1.构造请求头

  • 2.设置爬取时间间隙

  • 3.多设立几个账号

以上爬虫简易思路,希望对你们有帮助

From:https://www.cnblogs.com/l-xx123/p/18345876
本文地址: http://www.shuzixingkong.net/article/857
0评论
提交 加载更多评论
其他文章 洛谷P5250 【深基17.例5】木材仓库
【深基17.例5】木材仓库 题目描述 博艾市有一个木材仓库,里面可以存储各种长度的木材,但是保证没有两个木材的长度是相同的。作为仓库负责人,你有时候会进货,有时候会出货,因此需要维护这个库存。有不超过 100000 条的操作: 进货,格式1 Length:在仓库中放入一根长度为 Length(不超过
JavaWeb中的Tomcat,Servlet详解
JavaWeb JavaWeb技术主要包括服务器技术(后端),如Tomcat,Servlet,JSP等待,以及客户端技术(前端)如HTML,CSS,JavaScript等等 Web服务器 Web服务器主要负责处理客户端发出的HTTP请求,并做出相应回应 Web服务器:安装了服务器软件的计算机,只用于
JavaWeb中的Tomcat,Servlet详解 JavaWeb中的Tomcat,Servlet详解 JavaWeb中的Tomcat,Servlet详解
英语简单句
五种基本简单句: 陈述句 疑问句 祈使句 感叹句 简单句1 疑问句1.1 一般疑问句 概念: 用“yes”或“no”来回答的句子. 结构: [系动词be/助动词/情态动词 主语 谓语?]1.2 特殊疑问句 概念: 以疑问词开头,对句中某一成分提问的句子叫特殊疑问句。常用的疑问词有:what who
Jmeter SHA512接口加密测试
前言:最近,我遇到一些测试接口必须传入经过SHA512加密后的sign签名,并且签名有1小时时间限制,即签名不是一成不变超1小时就会过期,这导致在测试过程中就得频繁手工去更新签名。其实Jmeter是有提供函数去进行自动转换的,以下详解 SHA512加密,可以去网上搜索SHA512在线转换 1、已知,
Jmeter SHA512接口加密测试 Jmeter SHA512接口加密测试 Jmeter SHA512接口加密测试
数据结构学习之树结构
前段时间刚好在学习机器学习中的决策树,想起多年前学习树这个数据结构的场景,刚好借此机会回归一下知识点。 树是一种非常常见的数据结构,它由节点(Node)和边(Edge)构成。它有如下的一些特征: 1. 根结点(Root Node):树有且只有一个根结点,它是树的顶端结点。 2. 结点(Node):每
ffmpeg和ffplay常用指令
FFmpeg 常见用法 1. 基本命令结构 ffmpeg [global_options] -i input_file [input_options] output_file [output_options] 2. 将其它格式图片转换为 YUV420p ffmpeg -i input.jpg -pi
c#12 实验特性Interceptor如何使用的一个简单但完整的示例
一直有很多转载dotnet对Interceptor说明文档的,但鲜有说明Interceptor如何使用的,这里写一篇简单示例来展示一下 c# 12 实验特性Interceptor 是什么? 官方解释如下(其实简单说就是语言特性中内置的静态编织方式的aop功能,不同于其他il修改代码的方式,使用上得结
IntersectionObserver + scrollIntoView 实现电梯导航
电梯导航也被称为锚点导航,当点击锚点元素时,页面内相应标记的元素滚动到视口。而且页面内元素滚动时相应锚点也会高亮。电梯导航一般把锚点放在左右两侧,类似电梯一样。常见的电梯导航效果如下,比如一些官方文档中: 之前可能会用 getBoundingClientRect() 判断元素是否在视口中来实现类似效
IntersectionObserver + scrollIntoView 实现电梯导航 IntersectionObserver + scrollIntoView 实现电梯导航 IntersectionObserver + scrollIntoView 实现电梯导航