基础python爬虫

Python网络爬虫基础 基础知识讲解部分(网络爬虫入门) 网络爬虫就是自动地从互联网上获取程序。想必你听说过这个词汇,但是又不太了解,大家会觉得掌握网络爬虫还是要花一些功夫的,因此这个门槛让你有点望而却步。我常常觉得计算机和互联网的发明给人类带来了如此大的便利,让人们不用阅读说明书就知道如何上手,但是偏偏编程的道路却又是如此艰辛。因此,我会尽可能做到浅显易懂,希望读者能够读懂我说了什么,从而能够享受到其中的快乐。 基本介... 阅读详情


最近毕业论文需要数据,可惜网站只提供了数据表格,没法直接下载,所以趁此机会学习下爬虫。爬虫是什么?简单讲就是自动化程序,通过模拟用户访问网页的行为,抓取并解析互联网上的信息,然后保存到本地。这里提到了两个动作:(1)抓取互联网上的信息(2)解析抓取到的信息。那什么是互联网上的信息呢?就是html,我们看到的网页背后实际上都是html代码,而这些代码中间就夹杂这可能有用的信息,我们抓取互联网上的信息就相当于是去获取相应的html代码,去解析抓取到的信息简单讲就是对html代码的内容进行筛选,过滤得到自己想要的信息。听起来很复杂,实则不然,因为有现成的软件包可以使用。python爬虫常用软件报如下:

  1. requests:伪装用户访问网页,获取网页的html。
  2. bs4:用来对html内容进行解析的库。
  3. pandas库:pandas库的read_html函数可以把一个html中的所有表格读取成dataframe放到一个列表中。
  4. notepad++:推荐下载这个文本编辑器,因为它会对html的内容自动按规则缩进,使得html易读,方便我们设计筛选策略,从html中解析出我们需要的信息。

ok,接下来咱就先从requests库和bs4库的用法讲起。


requests库和bs4库的常见用法

参考:python爬虫入门实战案例教程-入门到精通

使用requests库获得url指定网页的html

首先,我们得打开url指定网页,然后右键点击检查,选择网络选项,在headers中查找到user-agent等信息(一般headers只需要设置user-agent就行了,但如果请求失败,可以尝试添加其它信息),然后再把它传递给requests的get或post函数,让程序伪装成真人获取网页的html。可为什么要做这一步呢?(原理参考)简单说网页是希望真人访问而不欢迎程序访问的,如果不这么干有些网页是会对你的自动化程序进行拦截的,就获取不到它的html了。具体的调用语法以及返回对象的相应属性如下图。
在这里插入图片描述

注意:requests库只能获取网页的静态内容,而有些网页使用JavaScript来动态加载内容,这就会导致requests得到的html和实际的html是不一致(如实战01)。有两个解决措施:(1)就继续使用requests得到的html,如果当中还是包含所需信息。(2)使用selenium库获取html。

使用bs4库的Beautifulsoup类对html内容进行解析(筛选)

要对html进行解析,首先就得了解下html的基础知识。html全称是Hyper Text Marked Language,它通过不同标签的组合实现文本、图像、表单等内容的组织与展示。常见的标签包括:(1)html标签,tml标签就是根标签,包裹整个页面内容。(2)body标签,body标签里放的就是在页面上可以看到的内容;(3)div标签,div标签是区块,爬虫经常先定位到区块,再在区块基础上做进一步定位。标签通常是成对出现的,开头的标签叫开始标签,结尾的标签叫结束标签。并且html里面的标签很多都是嵌套结构(这也是推荐下载notepad++的原因,不然html内容太乱了,根本看不清楚,更别提设计筛选方法了)。放在开始和结束标签中间的内容叫做链接文字,放在开始标签内的内容叫做标签属性。

补充:常见html标记的含义

在这里插入图片描述

ok,html的基础目前知道这么多是够用了。然后我们就可以对html进行解析了。首先,可以肯定的是requests返回对象的text属性放的就是指定url的html,但是它是一个字符串,我们要对这个字符串的内容直接进行筛选是非常困难的,简单的办法就是把它传递给Beautifulsoup,得到一个Beautifulsoup的实例。那为什么这样做呢?因为Beautifulsoup类有非常强大的find和find_all方法,可以快速的筛选出html类中指定标签以及嵌套在其标签内部的标签所包含的内容,并且可以方便的访问标签的相关信息。具体调用语法见上图。


实战

01 爬取个人博客上所有的文章名及其网址

分析

待爬网页的html上就包含了所需的全部信息,使用requests库获取网页的html,然后用bs4库筛选出想要的数据。

代码

# -*- coding: utf-8 -*-
"""
Created on Wed Feb 26 18:46:21 2025
@author: syaunsheng
"""
import requests
from bs4 import BeautifulSoup

# 我博客主页的url
url_root = "https://blog.youkuaiyun.com/fighterDMU" 
# 打开浏览器查看user-agent和cookie设置headers,伪装成真人访问网页源代码
headers = {
    'User-Agent':"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Mobile Safari/537.36 Edg/133.0.0.0"
    } 
r = requests.get(url_root,headers=headers)
if r.status_code != 200:
    raise Exception("请求失败")
with open(r'.\html.txt','w') as f:
    f.write(r.text) # 由于csdn使用JavaScript动态加载内容,而requests只能获取网页的静态内容,导致requests得到的内容和网页源代码不一致,所以先把requests读取到的内容写入文件,再看看有什么办法把需要的信息读出来。
# 发现所需信息放在<ul class="colu_author_c">这个标签中,把这种标签之内的内容先筛选出来,然后一层一层筛选出所需内容
soup = BeautifulSoup(r.text,'html.parser')
ul_tags = soup.find('ul',class_='colu_author_c')
div_tags = ul_tags.find_all('div',class_='colu_author_c_listName')
for div_tag in div_tags:
    h4_tags = div_tag.find('h4')
    a_tags = h4_tags.find('a')
    print('文章:《{}》 地址:{}'.format(a_tags.get_text(),a_tags['href']))

02 爬取城市过去几年的天气情况

分析

以绵阳市的历史天气为例,从https://tianqi.2345.com/wea_history/71996.htm 这个网站上获取过去几年的天气情况,并写入到excel表格中。注意到该网站使用了ajax技术,即通过在后台发送异步 HTTP 请求并接收响应,使得用户能够在不刷新整个页面的情况下(就是说你切换年月后观察不到url的变化)获取更新后的数据。这时我们就得使用浏览器的检查功能抓包该网页的请求url和查询字符串。通过设置params函数实现对网页的请求。

代码

# -*- coding: utf-8 -*-
"""
Created on Thu Feb 27 14:45:44 2025

@author: syaunsheng
"""

import requests
import pandas as pd
from io import StringIO  
from bs4 import BeautifulSoup

url = "https://tianqi.2345.com/Pc/GetHistory" # 待爬取网站的url链接
headers = {
    'user-agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Edg/133.0.0.0",
    'referer':'https://tianqi.2345.com/wea_history/56196.htm'
    } # 伪装成真人进行访问
def get_weather(year=2025,month=2):
    """获取指定年,月的天气"""
    params = {
        'areaInfo[areaId]': 71996,
        'areaInfo[areaType]': 2,
        'date[year]': year,
        'date[month]': month
        } # 设置url的查询字符串参数
    r = requests.get(url,headers=headers,params=params)
    if r.status_code != 200:
        raise Exception("抓取失败")
    s = StringIO()
    s.write(r.json()['data'])
    s.seek(0)
    return pd.read_html(s)[0]
df_lst = [] # 存放各月的dataframe
for year in range(2023,2025):
    for month in range(1,13):
        df = get_weather(year,month)
        df_lst.append(df)
pd.concat(df_lst,ignore_index=True).to_excel('.\绵阳市天气数据.xlsx')

附:浏览器检查功能的使用

(1) 查看headers,设置相关参数。

(2) 查看浏览器响应的内容是什么格式、url附带的查询字符串、请求该网页应该使用的url。
在这里插入图片描述

python网络爬虫学习笔记(1)爬虫概述 安装 Python基础 网络爬虫学习笔记(1) 1 资料 《Python网络爬虫从入门到实践》唐松,陈志铨。主要面向windows平台下的python3。 2 笔记 2-1 爬虫概述 (约2016年)网络爬虫个人使用和科研范畴基本不存在问题,但商业盈利范畴就要看对方了。 通过网站的Robots协议(爬虫协议)可以知道可以和不可以抓取的内容,例如淘宝的[link]https://www.taobao.com/robots... 阅读详情

相关推荐

Python 网络爬虫入门与实践:从基础到高级技巧

详细介绍了 Python 网络爬虫的基础知识、常用库、实战案例以及高级技巧

AI+全栈,AI+应用,实操落地,前沿技术 1688

python网页爬虫requests和bs4应用

python爬虫工具讲解

m0_58239511的博客 919

【100天精通python】Day41:python网络爬虫开发_爬虫基础入门

网络爬虫(Web Crawler),是一种自动化程序,用于在互联网上浏览和抓取信息。爬虫可以遍历网页,收集数据,提取信息,以便于进一步处理和分析。网络爬虫在搜索引擎、数据采集、信息监测等领域发挥着重要作用。1.1 工作原理初始URL选择: 爬虫从一个或多个初始URL开始,这些URL通常是你希望开始爬取的网站的主页或其他页面。发送HTTP请求: 对于每个初始URL,爬虫会发送HTTP请求以获取网页内容。

qq_35831906的博客 6669

Python爬虫:requests和bs4

requests和bs4 requests的用法 requests是Python用于网络(http)请求的第三库,也是爬虫获取网络数据的重要工具,使用的时候需要导入 import requests 1. 向目标地址(网络地址)发送请求 语法: requests.get(url,*,headers, proxies, timeout) - 以指定的方式给地址发送网络请求,返回值是服务器返回的响应对象 参数说明: url - 字符串;请求的网络地址,可能是目标网站的网址也可能是数据接口

m0_57864180的博客 2688

Python网络爬虫实战教程:从基础到高级应用

BeautifulSoup是Python编程语言中最常用的库之一,用于网页解析和数据提取。它提供了一系列简便的API来遍历、搜索以及修改解析树,适用于快速的网页数据抓取任务。BeautifulSoup库能够解析HTML或XML文档,并能够从复杂的HTML文档中提取所需信息。

weixin_30951515的博客 2439

【无机纳米材料科研制图——OriginLab 0205】Origin对BET吸附/脱附曲线及孔径分布制图...

此篇,我们来分享如何对BET数据进行处理和制图。 一、等温吸脱附曲线绘制 1)找到等温吸脱附文件。 一半来说,对一个样品测一次BET,会产生很多数据,具体因仪器而异。我这里的数据主要有两个文件夹,一个脱附,一个吸附,吸附文件夹中多了一个等温吸脱附的文件夹。而这...

XD_Yangf的博客 803

Python之BS4

1.BS4的理解 # BS4会将html文档对象转换为python可以识别的四种对象: Tag: 标签对象 NavigableString : 字符内容操作对象 BeautifulSoup: 文档对象 Comment: 文档中注释节点的内容 获取标签内容和属性 # 1. 获取标签内容 from bs4 import BeautifulSoup # 构造对象 s...

dzh1125641239的博客 490

深入解析ADC采样电容:从充电误差到LSB精度的关键设计

本文深入解析了ADC采样电容在模数转换中的核心作用,重点探讨了充电时间常数与采样误差的博弈关系。通过推导最小采样时间公式,揭示了精度、速度、源阻抗与内部电容之间的制约关系,并提供了从理论计算到外部驱动电路设计的实战指南,是确保ADC达到LSB精度的关键。

android的专栏 1103

Python中的Web爬虫实践:利用Beautiful Soup和Requests

Web爬虫是一种获取互联网信息的强大工具,而Python提供了一些优秀的库来简化爬虫的实现。本文将介绍如何使用两个常用的Python库,Beautiful Soup和Requests,来构建一个简单而有效的Web爬虫,用于从网页中提取信息。Web爬虫是一种自动化程序,用于浏览互联网并从网页中提取信息。它在数据采集、搜索引擎优化、信息监控等领域有着广泛的应用。Python作为一门优雅而强大的编程语言,提供了许多用于构建Web爬虫的库。

白帽阿叁的博客 1514

macOS Jdk1.8安装(目前主流版本的jdk)

添加环境环境变量,类似于windows的高级设置中path配置的环境变量。查看 JAVA_HOME 目录。查看 JDK 版本信息。一直下一步安装就好了。在终端的根目录下运行。

m0_50207524的博客 9353

计算机组成原理实验二 运算器组成实验

事实上,ALU的设计是在全加器的基础上,对全加器功能的扩展来实现符合要求的多种算术/逻辑运算的功能。为了实现多种功能的运算,An、Bn数据是不能直接与全加器相连接的,它们受到功能变量F3—F1的制约,因此,可由An、Bn数据和功能变量F3-F1组合成新的函数Xn 、Yn,然后,再将Xn 、Yn和下一位进位Cn-1通过全加器进行全加运算以实现所需的运算功能。AC寄存器可用来存储ALU的输入以实现两个操作数的运算操作,也可以用来存储来自ALU的结果,以将这些结果反馈给ALU以进行更多的处理。

qq_63574533的博客 1449

Python爬虫编程:数据解析模块之bs4,超详细

BeautifulSoup,是python中的一个库,是一个可以从HTML或XML文件中提取数据的Python库;它能够通过提供一些简单的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。会帮你节省数小时甚至数天的工作时间。自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,就不能自动识别编码方式了。

lu_jianjun的专栏 1万+

S7-200SMART PLC中进行MODBUS RTU通信的3种方法(1)

S7-200SMART PLC中进行MODBUS RTU通信的3种方法(1)

Robot_PLC_HMI_Automation 4237

python基础及网络爬虫

Python爬虫学习第一课,了解何为爬虫,python基础语法了解

记录学习路上的一些拙见 2867

2025年前端框架全景解析:React、Vue、Angular的生态与未来之争

前端框架的竞争本质是工程哲学的分野:React的灵活、Vue的简洁、Angular的严谨,分别对应不同场景需求。

科技D人生 4843

【数据结构】考点二十八 : 二叉树的概念:二叉树的度、完全二叉树、满二叉数结点数、哈夫曼结点数、完全二叉树的深度

二叉树(Binary Tree)是一种常见的数据结构,它或者为空(null),或者由一个根节点(root node)和两个子树(left subtree 和 right subtree)组成,这两个子树又分别是一棵二叉树。二叉树的每个节点最多有两个子节点,通常称为左子节点(left child)和右子节点(right child)。

超越的博客 1737

Python3网络爬虫开发--爬虫基础

爬虫基础

2302_80755459的博客 2905

在ABAQUS中使用VUMAT子程序实现Hashin失效准则的详细解析与实践:深入探讨复合材料模拟仿真的高级编程技巧

Hashin失效准则是由材料科学家Shlomo Hashin于1962年提出的一种基于能量方法的多向失效理论,主要用于预测复合材料的破坏行为。与传统的单向失效理论不同,Hashin准则考虑了材料内部的多种独立破坏机制,如基体断裂、界面脱粘、纤维断裂等,这些机制在不同应力状态下可能同时或分别发生。通过计算各个机制的能量释放率,Hashin失效准则能够更为准确地预测复合材料在复杂应力状态下的破坏行为。

qq_38334677的博客 1949

python网络爬虫基础知识

python网络爬虫与信息提取 1、目标 掌握定向网络数据爬取和网页解析的基本能力 the website is the API (将网站作为API获得自己想要的数据) 2、学习过程 (1)、requests库 自动爬取HTML页面,自动向网络提交请求 (2)、robots.txt 网络爬虫排除标准 (3)、Beaytiful Soup库 解析HTML界面和信息内容, (4)、Projects实...

weixin_42515907的博客 2001

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python网络爬虫基础指南

本文介绍了如何使用Python编写一个简单的网络爬虫,从基本结构到异常处理,再到异步请求。实际开发中,可能需要考虑更多因素,如防反爬虫机制、数据清洗与存储、多线程/多进程等。希望这篇文章能帮助你入门Python网络爬虫,并激发你进一步探索的兴趣。

运维人生 1355

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python网络爬虫:从基础到实战的完整指南

Python凭借其强大的生态系统和简单的语法,使网络爬虫开发变得高效而灵活。无论是从简单的HTML页面提取,还是应对复杂的反爬机制,Python都能提供丰富的工具与解决方案。通过本文的介绍,你已掌握了从基础爬虫开发到实战案例的完整流程,未来可以应用于数据分析、市场研究等多种领域。

qq_20245171的博客 1947

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Python 网络爬虫技术:从基础概念到实战案例

vscode是一个微软开发的优秀的代码编辑器。vscode可以安装各种插件来拓展它的功能,安装jupyter相关的插件可以让我们在vscode中运行ipynb类型的文件。这个爬虫脚本实现了对车质网新能源汽车销量数据的爬取和存储功能。主要使用了 requests 获取网页内容,BeautifulSoup 解析 HTML,pandas 处理数据,以及 sqlalchemy 连接 MySQL 数据库。

H188693的博客 1743

python网络爬虫基础,盗亦有道

python网络爬虫基础 网络爬虫的尺寸 三类爬虫 小规模,数据量小 爬取速度不敏感 中规模,数据规模较大,爬取速度敏感 大规模,搜索引擎 爬取速度关键 库 Requests库 90》爬虫 Scrapy库 无,一般大型搜索公司都有...

qq_41426326的博客 7839

Python网络爬虫基础:爬取网页数据

在当今信息爆炸的时代,能够从网页中提取所需的数据是一项非常有用的技能。Python作为一种强大且易于使用的编程语言,提供了多种库来帮助我们构建网络爬虫。本文将会详细介绍Python网络爬虫的基础知识,以及如何利用Python来抓取网页数据。

2301_78217634的博客 1136

Python 网络爬虫:基础与实践

Python提供了强大的工具和库,使得构建网络爬虫变得相对容易。然而,编写一个高效、可靠且遵守规则的爬虫需要一定的技术和经验。本文介绍了一个简单的网络爬虫示例,并探讨了一些高级技术和注意事项。希望这些内容能够帮助你开始你的爬虫之旅,并在实践中不断学习和改进。

运维人生 2079

python网络爬虫——爬虫基础知识

数字用来存储数值,包含两种常用的数字类型:整型(int)和浮点型(float),其中浮点型由整数和小数部分组成。jupyter notebook的交互编程可以分段运行python,对于网络爬虫这种分阶段(获取网页-解析网页-存储数据)运行的脚本来说,在写代码和测试阶段可以边看边写,可以加快调试代码的速度,非常适合debug(代码纠错)。字符串是常见的数据类型,一般用来存储类似“句子”的数据,并放在单引号(')或双引号(")中。(2)解析网页就是从整个网页的数据中提取想要的数据。如何访问列表中的值呢?

maizeman126的博客 915
上一篇: BP神经网络原理推导和实现
下一篇: Colossus:一种通用列生成算法框架
SACUKI
博客等级 码龄5年 139粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值