基于Python编程实现简单网络爬虫实现

引言
网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。 --维基百科

网络爬虫可以将自己所访问的页面保存下来,以便搜索引擎事后生成索引供用户搜索。
一般有两个步骤:1.获取网页内容  2.对获得的网页内容进行处理

准备
Linux开发环境

python3.61安装方法:https://www.cnblogs.com/kimyeee/p/7250560.html

安装一些必要的第三方库
其中requiests可以用来爬取网页内容,beautifulsoup4用来将爬取的网页内容分析处理
pip3 install requiests
pip3 install beautifulsoup4

第一步:爬取

使用request库中的get方法,请求url的网页内容
更多了解:Requests: HTTP for Humans™ — Requests 2.31.0 documentation

编写代码

[root@localhost demo]# touch demo.py
[root@localhost demo]# vim demo.py

#web爬虫学习 -- 分析
#获取页面信息
 
#输入:url
#处理:request库函数获取页面信息,并将网页内容转换成为人能看懂的编码格式
#输出:爬取到的内容
 
import requests
 
def getHTMLText(url):
    try:
        r = requests.get( url, timeout=30 )
        r.raise_for_status()    #如果状态码不是200,产生异常
        r.encoding = 'utf-8'    #字符编码格式改成 utf-8
        return r.text
    except:
        #异常处理
        return " error "
 
url = "http://www.baidu.com"
print( getHTMLText(url) )

[root@localhost demo]# python3 demo.py

第二步:分析

使用bs4库中BeautifulSoup类,生成一个对象。find()和find_all()方法可以遍历这个html文件,提取指定信息。
更多了解:Beautiful Soup: We called him Tortoise because he taught us.

编写代码

[root@localhost demo]# touch demo1.py
[root@localhost demo]# vim demo1.py

#web爬虫学习 -- 分析
#获取页面信息
 
#输入:url
#处理:request库获取页面信息,并从爬取到的内容中提取关键信息
#输出:打印输出提取到的关键信息
 
import requests
from bs4 import BeautifulSoup
import re
 
def getHTMLText(url):
    try:
        r = requests.get( url, timeout=30 )
        r.raise_for_status()    #如果状态码不是200,产生异常
        r.encoding = 'utf-8'    #字符编码格式改成 utf-8
        return r.text
    except:
        #异常处理
        return " error "
 
def findHTMLText(text):
    soup = BeautifulSoup( text, "html.parser" )    #返回BeautifulSoup对象
    return soup.find_all(string=re.compile( '百度' )) #结合正则表达式,实现字符串片段匹配
 
url = "http://www.baidu.com"
text = getHTMLText(url)        #获取html文本内容
res = findHTMLText(text)    #匹配结果
 
print(res)        #打印输出

[root@localhost demo]# python3 demo1.py

一个例子:中国大学排名爬虫

参考链接:Python123 - 编程更简单

#e23.1CrawUnivRanking.py
import requests
from bs4 import BeautifulSoup
allUniv = []
def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = 'utf-8'
        return r.text
    except:
        return ""
def fillUnivList(soup):
    data = soup.find_all('tr')
    for tr in data:
        ltd = tr.find_all('td')
        if len(ltd)==0:
            continue
        singleUniv = []
        for td in ltd:
            singleUniv.append(td.string)
        allUniv.append(singleUniv)
def printUnivList(num):
    print("{:^4}{:^10}{:^5}{:^8}{:^10}".format("排名","学校名称","省市","总分","培养规模"))
    for i in range(num):
        u=allUniv[i]
        print("{:^4}{:^10}{:^5}{:^8}{:^10}".format(u[0],u[1],u[2],u[3],u[6]))
def main():
    url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
    html = getHTMLText(url)
    soup = BeautifulSoup(html, "html.parser")
    fillUnivList(soup)
    printUnivList(10)
main()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ByConity 社区回顾|ByConity 和开发者们一起展望未来,携手共进!

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 新年伊始,我们想在这里感谢一群 ByConity 社区的小伙伴们。 正是因为有社区的开发者的支持,截止到 2023 年底,ByConity GitHub …

电脑的任务栏怎么恢复到底下?简单的4个方法帮你解决!

“我在使用电脑的时候突然发现电脑底部的任务栏不见了,有什么方法可以将任务栏恢复到底下吗?快给我出出主意吧!” 在使用电脑时,我们可能会发现电脑的任务栏跑到屏幕顶部或消失的情况。这不仅影响了我们的使用体验,还可…

SMD NTC Thermistor NTC热敏电阻产品基本参数定义

热敏电阻器(Thermistor)是一种电阻值对温度极为灵敏的半导体元件,温度系数可分为Positive Temperature Coefficient 正温度系数热敏电阻又称PTC热敏电阻和Negative Temperature Coefficient 负温度系数热敏电阻又称NTC热敏电阻. NTC热敏电…

20240115-【UNITY 学习】第一人称移动增加斜坡移动、冲刺和蹲伏功能

直接修改或者替换PlayerMovement_01.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerMovement_02 : MonoBehaviour {private float moveSpeed; // 玩家移动速度public float walkSpeed 7; // 行走速度public float sp…

运筹说 第91期 | 网络计划经典例题讲解

通过前几期的学习,我们已经学会了网络图的基本概念、时间参数的计算,并且掌握了随机网络的概念、图解评审法的基本原理和基本解法,本期小编带大家学习网络计划在经济管理中的应用。 在实际工作中,我们能发现网络计划在经济管理中…

ThingsPanel部署和使用

前置条件: 首先默认大家有一台服务器或者云服务器并且已经搭建好环境。小编是基于Linux宝塔环境以Docker安装ThingsPanel平台。 一.Docker和Docker-compose 1.概述 Docker是一个开源的容器化平台,它可以帮助开发者将应用程序与其依赖项打包到一个轻量…

Windows10 Docker Desktop安装

一、简介 Docker Desktop是Docker公司推出的一款桌面应用程序,它提供了一个用户友好的界面,方便开发人员在本地环境中使用容器技术。 容器是一种轻量级的虚拟化技术,可以将应用程序和其依赖项打包在一起,形成一个独立、可移植的…

gateway Redisson接口级别限流解决方案

文章目录 前言1. 计数器算法(固定窗口限流器)2. 滑动窗口日志限流器3. 漏桶算法(Leaky Bucket)4. 令牌桶算法(Token Bucket)5. 限流队列应用场景实现工具 一、Redisson简介二、Redisson限流器的原理三、Red…

Docker实战06|深入剖析Docker Run命令

前几篇文章中,重点讲解了Linux Namespace、Cgroups、AUFS的核心原理,同样也是Docker的底层原理实现。目录如下: • 《Docker实战01|容器与开发语言》 • 《Docker实战02|Namespace》 • 《Docker实战03|C…

RPA与通知机器人的完美结合

写在前面 在现代快节奏的工作环境中,我们经常会面临多个任务同时进行的情况,你还在为时间不够用、忙碌而惆怅吗?你还在为时刻盯着电脑流程而烦恼吗?你还在为及时收不到自己的自动化任务进度而焦躁吗?别担心&#xff0…

6K star! 100%本地运行LLM的AI助手

AI套壳千千万万,你最喜欢哪一款?现在各种ChatGPT替代品层出不穷,但是大部分都是使用OpenAI的API,也就说离不开网络。 今天我们推荐的开源项目它就是要帮你100%在本地运行大模型,进而构建一个属于自己的ChatGPT&#x…

直播岗位认知

一、直播平台特性与规则 作为直播岗位的一员,首先要了解所使用的直播平台的特性与规则。不同的平台有着不同的用户群体和特点,同时也有各自的运营规则和规范。熟悉平台的操作界面、功能特点、用户行为规范、广告和版权等方面的规定,对于保证…

Vue Axios——前端技术栈

文章目录 基本介绍Vue是什么? MVVMVue的使用快速入门注意事项和使用细节 Vue 数据绑定机制分析数据单向渲染注意事项和细节 双向数据绑定事件绑定示例:注意事项和使用细节课后作业1课后作业2 修饰符示例 条件渲染/控制: v-if v-showv-if VS v-show课后作…

[HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

ArcGIS Pro中怎么加载在线地图

当我们在制图的时候,有的时候需要加载在线地图,在ArcGIS Pro中加载在线地图的方式有很多,这里为大家介绍一下加载的方法,希望能对你有所帮助。 加载底图 在菜单栏上选择地图,点击底图,可以看到所有可加载…

【PyQt小知识 - 7】:QLineEdit设置输入的文本以圆点或星号等方式显示

文章目录 setEchoMode setEchoMode 在PyQt中,QLineEdit是一种用于接收用户输入的小部件(widget)。setEchoMode是QLineEdit类中的一个方法,可以用于设置文本输入框中的文本显示模式。它接受一个参数来指定要使用的模式。 setEcho…

「JavaSE」类和对象2

🎇个人主页:Ice_Sugar_7 🎇所属专栏:快来卷Java啦 🎇欢迎点赞收藏加关注哦! 类和对象2 🍉匿名对象🍉关键字static🍌static修饰成员变量🍌static修饰成员方法&…

JavaScript switch case语句

JS switch case 语句与 if else 语句的多分支结构类似,都可以根据不同的条件来执行不同的代码;但是与 if else 多分支结构相比,switch case 语句更加简洁和紧凑,执行效率更高。 JavaScript switch case 语句的语法格式如下&#…

认识SpringBoot中的条件注解

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:认识SpringBoot中的条件注解 📚个人知识库: Leo知识库,欢迎大家访问 1.前…

实人认证(人像三要素)API:加强用户身份验证

前言 在当今数字化时代,随着互联网应用的广泛普及,用户身份验证的重要性日益凸显。实人认证(人像三要素)API作为一种新型的身份验证方式,凭借其高效、安全和便捷的特性,正在成为加强用户身份验证的强大工具…