极简爬虫通用模板

news2024/11/21 2:26:57

网络爬虫的一般步骤如下:

1、确定爬取目标:确定需要爬取的数据类型和来源网站。

2、制定爬取策略:确定爬取哪些网页、如何爬取和频率等。

3、构建爬虫程序:使用编程语言(如Python)实现爬虫程序,通过HTTP请求获取网页内容,并进行解析和处理。

4、数据存储:将爬取到的数据存储到数据库或文件中,便于后续处理和分析。

5、处理异常情况:处理因网络故障、网页解析错误等原因导致的异常情况。

6、遵守规则:遵守网络爬虫的相关规定,如robots协议、网站的访问频率限制等。

7、定期更新:定期更新爬虫程序,以适应网站的变化和更新。

在这里插入图片描述

一、准备工作

1、获取网页

需要用到requests库,最常用得是get()方法

import requests
link = 'https://网址xxxxx/'
response  = requests.get(link)

这样就获取了网页,想要进一步查看网页,需要用到text属性

print(response.text)`

2、解析网页(也就是找到想要的信息)

需要用到bs4库

from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text,'html.parser')

找到对应标签需要用到find_all方法

soup = BeautifulSoup(response.text,'html.parser').find_all(name='div',class_="top-ok")

3、保存信息

with open('book.txt','a+') as f:
        f.write(m.text+'\n')

二、爬虫程序最小框架

结合上面所说,爬虫最小框架得代码为:

import requests
from bs4 import BeautifulSoup
# 获取网页
link = 'https://网址xxxxx/'
response  = requests.get(link)
# 解析网页
soup = BeautifulSoup(response.text,'html.parser').find_all(name='div',class_="top-ok")
# 保存信息
with open('book.txt','a+') as f:
    f.write(m.text+'\n')

三、额外说明

为了顺利爬取网站信息,有几个必备技能一定要了解。

1、headers

为了对付“反爬虫”,我们需要让程序觉得是人在操作,最基本得方法是设置headers

headers = {'User-Agent': 'xxx此处换为自己的信息xxxx'}
link = 'https://网址xxxxx/'
response  = requests.get(link ,headers = headers)

2、编码方式设定

有时候爬取下来得信息会出现乱码,这时候需要通过设置编码解决。常见得编码方式为UTF-8、GBK

response  = requests.get(link ,headers = headers)
response.encoding = 'UTF-8'

所以我们得爬虫最小框架进化成了下面得形式

import requests
from bs4 import BeautifulSoup
# 获取网页
headers = {'User-Agent': 'xxx此处换为自己的信息xxxx'}
link = 'https://网址xxxxx/'
response  = requests.get(link ,headers = headers)
response.encoding = "UTF-8"
# 解析网页
soup = BeautifulSoup(response.text,'html.parser').find_all(name='div',class_="top-ok")
# 保存信息
with open('book.txt','a+') as f:
    f.write(m.text+'\n')

四、举例

举例子。此处需要把headers设置成自己得才能正常运行。

import requests
from bs4 import BeautifulSoup
headers = {'User-Agent': 'xxx此处换为自己的信息xxxx'}
link = 'http://jshk.com.cn/'
response  = requests.get(link ,headers = headers)
response.encoding = 'UTF-8'
print(response.text)
soup = BeautifulSoup(response.text,'html.parser').find_all(name='div',class_="top-ok")
for n in soup:
   n = n.find_all(name='a')
   for m in n:
       with open('book.txt','a+') as f:
           f.write(m.text+'\n')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】列表、字典、元组与集合的特点以及对比

一、列表(List) 1. 列表的特点 数据按顺序存储列表有正序、倒序两种索引列表可存储任意类型的数据,并且允许重复。 2. 列表的遍历: lst[1,2,3] for i in range(len(lst)):print(lst[i],end" ")3. 列表的缺点&#x…

虹科方案 | HK-TrueNAS:音频协作的理想存储

一、虹科HK-TRUENAS 非常适合 AVID PRO TOOLS™ 专业音频编辑和大多数媒体和娱乐 (M&E) 工作流程从录制开始,经过后期制作,最后进入播放。这一过程可能需要几个月的时间来拍摄一部大型的电影,也可能需要几个小时甚至几分钟的时间来播放最…

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、工程交易等业务的企业

招投标管理系统-适合于招标代理、政府采购、企业采购、工程交易等业务的企业 招投标管理系统是一个用于内部业务项目管理的应用平台。以项目为主线,从项目立项,资格预审,标书编制审核,招标公告,项目开标,项…

使用篇丨链路追踪(Tracing)很简单:链路拓扑

作者:涯海 最近一年,小玉所在的业务部门发起了轰轰烈烈的微服务化运动,大量业务中台应用被拆分成更细粒度的微服务应用。为了迎接即将到来的双十一大促重保活动,小玉的主管让她在一周内梳理出订单中心的全局关键上下游依赖&#…

反射~~~

文章目录 反射反射获取Class类对象反射获取构造器对象反射获取成员变量对象反射获取方法对象反射的作用绕过编译阶段为集合添加数据通用框架的底层原理 反射 反射获取Class类对象 getClass()方法为Object类中的成员方法 反射获取构造器对象 parametTypes为参数的类对象 获得类的…

智安网络|网络安全威胁越来越多,教你如何全方面应对

随着互联网的普及和发展,各大网站已经成为人们获取信息和交流的主要平台。然而,随着网络攻击和恶意软件的威胁不断增加,网站经常成为攻击者的目标。因此,在建立和维护网站系统时,必须采取强大的安全措施。 一、网站系…

阅读有感重庆rcgl

1.json转为对应的泛型集合 List<String> resourceList JSON.parseArray(JSON.toJSONString(obj), String.class); 2.集合转换为数组 String[] roles (String[])resourceList.toArray(new String[0]); 3.json转换为对应的javabean SLoginRule loginRule (SLoginRul…

【Web项目实战】从零开始学习Web自动化测试:用Python和Selenium实现网站登录功能

B站首推&#xff01;2023最详细自动化测试合集&#xff0c;小白皆可掌握&#xff0c;让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 1.环境搭建 2.编写测试用例 3.运行测试用例 3.1 命令行方式 3.2 集成到CI/CD流程中 4.结论 Web自动化测…

Windows安装配置Tomcat服务器教程 ——外网远程访问

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 转载自cpolar文章&#xff1a;外网访问本地Tomcat服务器【cpolar内网穿透】…

ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443)

问题&#xff1a; 今天在遇到了安装pytorch中的torchvision包的时候一直超时失败报错如下 ReadTimeoutError: HTTPSConnectionPool(hostfiles.pythonhosted.org, port443): Read timed out. 之前的安装的方式是&#xff1a; pip install --no-deps torchvision 解决办法&…

uni——模拟购物车(全选、全不选、步进器、结算等)

案例演示 案例代码 <template><pageBox ref="pagebox"><view class=

Java程序设计入门教程--案例:自由落体

程序模拟物体从10000米高空掉落后的反弹行为。 球体每落地一次&#xff0c;就会反弹至原高度的一半。按用户输入的弹跳次数&#xff0c;计算球体每次弹跳的高度。 实现过程&#xff1a; 1. 新建项目&#xff1b; 2. 接收 用户输入的弹跳次数&#xff1a; &#xff08;1&#…

通过Robotstudio修改机器人程序的具体方法和步骤

通过Robotstudio修改机器人程序的具体方法和步骤 基本步骤可参考以下内容: 用网线连接机器人和电脑,机器人一侧要插入LAN2口;机器人和电脑的IP地址要在同一个网段内;请求写入权限;修改程序—编译—应用;加载修改后的程序到机器人;保存Robotstudio程序到电脑端;只能修改…

超大规模视觉通用感知模型

超大规模视觉通用感知模型 通用感知模型简介与发展超大规模图像、文本主干网络多任务兼容解码网络 参考文献 通用感知模型简介与发展 通用感知模型是指一个模型解决不同的感知任务&#xff0c;应用于各种模态数据。 通用感知模型的发展脉络图如下&#xff0c;它由NLP发源&…

Visual Studio Code 和 GitHub Copilot

翻译自 Chris Dias 的博客 AI 这个话题&#xff0c;近期我们看到它被大家广泛地谈论&#xff0c;有些人很兴奋&#xff0c;也有些人表达了担忧。进步几乎每天都在发生&#xff0c;速度前所未有。每天有超过一百万的 Copilot 用户&#xff0c;如果你有机会尝试&#xff0c;你可…

简易英文统计和加密系统的设计实现(纯C语言实现,包含文件操作、注释多、易理解)

❤️作者主页&#xff1a;微凉秋意 &#x1f525;系列专栏&#xff1a;数据结构与课程设计 ✅作者简介&#xff1a;后端领域优质创作者&#x1f3c6;&#xff0c;CSDN内容合伙人&#x1f3c6;&#xff0c;阿里云专家博主&#x1f3c6; 文章目录 前言部分功能、开发环境与项目结…

十二、模块化开发

一、什么是模块化&#xff1f; 到底什么是模块化、模块化开发呢&#xff1f; 事实上模块化开发最终的目的是将程序划分成一个个小的结构&#xff1b;这个结构中编写属于自己的逻辑代码&#xff0c;有自己的作用域&#xff0c;定义变量名词时不会影响到其他的结构&#xff1b;…

上海车展:油电反转,新能源车竞争白热化

还记得2009年的上海车展&#xff0c;新能源车初来乍到&#xff0c;一共才展出47辆&#xff0c;占所有展出车辆5.12%&#xff0c;今年参展车型中&#xff0c;传统燃油车型有58款&#xff0c;新能源车有76款&#xff0c;新能源车第一次超过燃油车&#xff0c;实现油电反转。 电动…

均值滤波 附带简易code

1.概念介绍  均值滤波是典型的 线性滤波算法&#xff0c;是指用当前像素点周围nxn个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点&#xff0c;可完成整幅图像的均值滤波。 2.基本原理  如图2-1&#xff0c;我们对第5行第5列的像素点进行均值滤波时…

D. Labyrinth(双端队列BFS)

Problem - D - Codeforces 你正在玩一款电脑游戏。其中一个关卡将你置于一个迷宫中&#xff0c;它由n行构成&#xff0c;每行包含m个单元格。每个单元格要么是空闲的&#xff0c;要么被障碍物占据。起始单元格位于第r行和第c列。在一步中&#xff0c;如果目标单元格没有被障碍物…