数据爬取(urllib+BeautifulSoup)

news2025/1/11 16:54:03

文章目录

  • 知识点总结
    • 爬虫步骤
    • 爬虫三要素
    • 爬虫注意事项
    • python爬取技术学习
      • 网页抓取库Urllib
      • 网页解析库Beautifulsoup
  • 案例

知识点总结

爬虫是一种按照一定规则,自动抓取互联网上网页中的相应信息的程序或脚本。

爬虫步骤

1.需求分析
2.找到要爬取信息的网站
3.下载request(网站返回的内容)
4.利用正则表达式-re,xpath-lxml(通过返回的信息找到需要爬取的数据内容)
5.找到mysql(存储找到的数据内容)

爬虫三要素

网页抓取
网页解析
数据存储

爬虫注意事项

1.遵守Robots协议(网站国际互联网界通行的道德规范,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯),谨慎爬取
2.限制爬虫行为,禁止近乎DDOS(通过大量的数据包和目标服务器建立连接,占用目标服务器的带宽,导致目标服务器无法再去为正常的用户提供服务,表现为服务器炸了)的请求频率,一旦造成服务器瘫痪,约等于网络攻击
3.对于明显反爬,或者正常情况不能到达的页面不能强行突破,否则是Hacker行为
4.如果爬取到别人的隐私,立即删除,降低进局子的概率
2.静态网页和动态网页的区分
请填空描述,并各举一个例子进行描述,要求对案例进行抓图讲述。
静态页面是随着HTML代码的生成,页面的内容和显示效果就基本不会发生变化(除非修改页面代码)
动态页面,虽然同样页面代码不发生变化,但是其显示的内容确实可以随着时间环境或者数据操作的结果而发生变化。
静态页面和动态页面的认识应该定位在:是否有数据库加工这个环节。

python爬取技术学习

网页抓取库Urllib

请描述Urllib库的功能,并举例讲述如何使用Urllib库打开一个网页
urllib是Python内置的HTTP请求库,它包含4个模块:
1.request:最基本的HTTP请求模块,可以用来模拟发送请求。
2.error:异常处理模块,如果出现请求错误,可以捕获异常,然后进行重试或其他操作。
3.parse:工具模块,提供了许多URL处理方法,如拆分、解析、合并等。
4.robotparser:主要用于识别网站的rebots.txt文件,然后判断哪些网站可以爬,哪些网站不可以爬。

网页解析库Beautifulsoup

请描述Beautifulsoup库的功能,并举例讲述如何使用Beautifulsoup解析html数据。
解析html、简单获取网页标签信息、定位标签并获取内容

案例

任务要求
编写程序,翻页爬取我校主页上的学院动态模块的全部信息,具体要求如下:
(1)爬取地址为:https://www.hist.edu.cn/index/sy/xydt.htm。
(2)爬取模块列表中的三部分信息:院系,标题和 URL 地址信息。
(3)将爬取的信息存储到文件“xueyuandongtai.txt”中,一行显示一条,
信息院系,、标题和 URL 地址信息之间用逗号隔开。

import urllib.request
from bs4 import BeautifulSoup

# 输入url,返回该网页的源码
def getURL(urls):
    contents = []
    for url in urls:
        res = urllib.request.urlopen(url)
        contents.append(res.read().decode('utf-8'))
        # print(contents)
    return contents

# 输入content源码,返回lists数据
def resolveHtml(contents):
    lists = set()
    for content in contents:
        soup = BeautifulSoup(content, "html.parser")
        divs = soup.find_all('div', {'class': 'list-main-warp'})
        # print(len(divs))
        lis=divs[0].find_all('li')
        # print(len(lis))
        for li in lis:
            one=""
            #院系
            yuanxi_title=li.find_all('a')[0].string
            yuanxi=yuanxi_title.split("\xa0\xa0")[0]
            #url
            url=li.find_all('a')[0].get("href")
            #标题
            title=li.find_all('a')[0].get("title")
            one=url+","+title+","+yuanxi
            lists = lists | {one}
    # print(lists)
    return lists
# saveInfo:
#  输入:lists,filename
# 功能: 将lists中数据写入文件filename中
def saveInfo(lists,filename):
    with open(filename,"a+",encoding="utf-8") as fp:
        for i in lists:
            fp.write(i+"\n")
def main():
    urls = ["https://www.hist.edu.cn/index/sy/xsbg/{}.htm".format(str(i)) for i in range(1,29)]
    urls.append("https://www.hist.edu.cn/index/sy/xsbg.htm")
    # print(urls)
    contents=getURL(urls)
    lists=resolveHtml(contents)
    filename="xueyuandongtai.txt"
    saveInfo(lists,filename)
if __name__ == "__main__":
    main()

在这里插入图片描述

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

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

相关文章

基于halo后台管理+Gblog-wx搭建的微信小程序

先决条件 1、已经通过docker安装了halo后台管理系统(参考:http://43.136.39.20:8090/archives/halo-build) 2、安装的halo版本为1.5.3版本。此版本的halo才能安装小程序主题并启动小程序 3、需要修改小程序文件配置 解决安装的不是1.5.3的halo 1、如果是docker安装的halo…

蓝牙技术|蓝牙5.4标准正式发布,蓝牙ESL电子价签迎来一波利好

蓝牙技术联盟于2023年1月31日批准了蓝牙核心规范v5.4版本(以下简称蓝牙5.4版本),并已正式公布。 蓝牙5.4版本引入了四个新特性,如下: 广播数据加密(Encrypted Advertising Data):对广播数据进行加密以提高广播数据传…

[神经网络]Swin Transformer网络

一、概述 Swin Transformer是一个用了移动窗口的层级式Vision Transformer。 在图像领域,Transformer需要解决如下两个问题: ①尺度问题:同一语义的物体在图像中有不一样的尺度。(大小不同) ②Resolution过大:若以像素点作为单位&…

利用python写一个gui小公举--环境搭建

文章目录背景搭建环境安装必要库添加工具快捷方式检验背景 在实习过程中遇到一个问题,某项目是通过python代码实现的,而且需要一直修改参数实现功能,过程有些繁琐。虽然师兄用PHP study搭了一个网站用于查看结果,但是还是过于繁琐…

分布式新闻项目实战 - 12.热点文章-实时计算(kafkaStream)

死海效应: 公司发展到一定阶段后,工作能力强的员工,就会离职,因为他无法容忍公司的某些行为,即使辞职也很快会找到好工作;工作能力差的员工,却赖着不走,因为辞职以后也不太好找工作&…

JavaScript实现十大排序算法

目录 概览 一、冒泡排序 1、算法描述 2、图示 3、代码 二、选择排序 1、算法描述 2、图示 3、代码 三、插入排序 1、算法描述 2、图示 ​编辑 3、代码 四、希尔排序 1、算法描述 2、图示 3、代码 五、并归排序 1、算法描述 2、图示 ​编辑​编辑3、代码 …

食品与疾病关系预测赛题

和鲸平台数据分析实战 题目:食品与疾病关系预测算法赛道 一、赛题描述 食品与疾病关系预测算法赛道 越来越多的证据表明,食物分子与慢性疾病之间存在关联甚至治疗关系。营养成分可能直接或间接地作用于人类基因组,并调节参与疾病风险和疾病…

php结课报告--会员注册管理系统

目录 1. 系统背景及意义 1 2. 系统的设计思路 1 2.1 数据库设计分析 1 2.2 功能模块设计分析 1 3. 程序功能测试及截图 1 3.1代码测试与功能演示 1 4. 总结与收获 6 1.系统背景及意义 随着现在时代得发展,…

【AI面试】NMS 与 Soft NMS 的辨析

往期文章: AI/CV面试,直达目录汇总【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化 一、NMS 非极大值抑制(Non-Maximum Suppression,NMS),并不是深度学习时期,目标…

VS项目配置常用的配置

背景随着学习使用VS的深入在项目配置使用一些相对路径是必不可少的,使用绝对路径是最简单的,但是加入你换了电脑或者别人拉取你的代码,就会发现通常会编译不过.因为项目配置使用了绝对路径.所以使用相对路径的好处就会体现.在VS项目配置有自己的一套配置,简单记录一下我使用到的…

mysql一主键uuid和自增的选择

文章目录 1.自增ID的优缺点1.1 优点1.2 缺点1.3 不适合以自增ID主键作为主键的情况2.UUID作为主键2.1 介绍2.2 优点2.3 缺点3.有序UUID作为主键3.1 介绍3.2 演示使用3.2.1 前提知识3.2.1.1 数据类型 - binary3.2.1.2 函数 - hex()3.2.1.3 函数 - unhex()3.2.2 数据库层3.2.3 JA…

蓝桥杯第十四届校内赛(第三期) C/C++ B组

一、填空题 (一)最小的十六进制 问题描述   请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。   请将这个数的十进制形式作…

提升Mac使用性能的5大方法,CleanMyMacX 2023非常的好用哦~

近些年伴随着苹果生态的蓬勃发展,越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现,它的使用逻辑与Windows存在很多不同,而且随着使用时间的增加,一些奇奇怪怪的文件也会占据有限的磁盘空间,进而影响使用…

sql数据库常用操作指令

一、操作库-- 创建库create database db1;-- 创建库是否存在,不存在则创建create database if not exists db1;-- 查看所有数据库show databases;-- 查看某个数据库的定义信息 show create database db1; -- 修改数据库字符信息alter database db1 character set ut…

Istio Sidecar启动顺序 - 导致的应用容器网络不通

目录一、问题二、Istio 1.7及其之后版本的解决方案2.1 方式1:安装Istio时全局设置2.2 方式2:在应用Deployment通过annotation设置2.3 holdApplicationUntilProxyStarts启用效果三、Istio 1.7之前的解决方案一、问题 线上应用集成了Spring Cloud K8S Con…

HCIP实验1

实验要求 1 R6为isp, 接口IP地址均为公有地址;该设备只能配置IP地址,之后不能冉对其进行其他任何配置; 2 R1-R5为局域网,私有IP地址192.168.1.0/24, 请合理分配; 3 R1, R2, R4,各有两个环回地址; R5; R6各有一个环回地址;所有路由器上环回均…

2 GateWay工作流程+GateWay搭建

GateWay工作流程GateWay搭建 核心流程图如下: 核心概念: 客户端向 Spring Cloud Gateway 发出请求。如果Gateway Handler Mapping确定请求与路由匹配,则将其发送到Gateway Web Handler 处理程序。此处理程序通过特定于请求的Fliter链运行请求…

ARM uboot 的移植1-从三星官方 uboot 开始移植

一、移植初体验 1、直接编译三星移植版 uboot 尝试运行 (1) 复制到 linux 的源生目录下,然后解压开。 (2) 检查 Makefile 中的交叉编译工具链。 (3) 配置时使用:make smdkv210single_config,对应 include/configs/smdkv210single.h 头文件。…

力扣(LeetCode)430. 扁平化多级双向链表(2023.03.04)

你会得到一个双链表,其中包含的节点有一个下一个指针、一个前一个指针和一个额外的 子指针 。这个子指针可能指向一个单独的双向链表,也包含这些特殊的节点。这些子列表可以有一个或多个自己的子列表,以此类推,以生成如下面的示例…

javaWeb核心01-HTTPTomcatServlet

文章目录HTTP&Tomcat&Servlet1,Web概述1.1 Web和JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器1.3 Web核心课程安排2, HTTP2.1 简介2.2 请求数据格式2.2.1 格式介绍2.2.2 实例演示2.…