爬虫基础

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

小白一枚,最近开始学习爬虫。跟大家分享一下。
本文以爬取python100例为对象
一、爬虫的匹配方式有四种
1、正则表达式
2、CSS
3、beautiful soup
4、xpath
二、爬虫的基本步骤如下:
第一步:
先获取url((URL,是指“Uniform Resource Locator”的缩写,即统一bai资源定位符。)),表示网址

from bs4 import BeautifulSoup#导入所需要的包
import requests
import pandas as pd
url = 'https://www.runoob.com/python/python-100-examples.html'#要爬取的网页地址
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    
}##header可通过右击审查元素中的network,点击刷新,选择最上面自己的网址,然后下滑到最后一个user-agent

第二步:

r = requests.get(url,headers=headers).content.decode('utf-8')#直接获取会造成乱码,对获取来的文件进行解码,是指获取请求,可以进行爬虫
#print(r)
#解析html文档,获取后的文档为乱码,需要对它进行解码,一般解码为lxml格式
soup = BeautifulSoup(r,'lxml')  #解析文档为lxml模式
#print(type(soup))
re_a = soup.find(id='content').ul.find_all('a')   #返回的是100个a标签的列表,因为要爬取里面的每一个链接。
#创建一个列表保存url
lis = []
for i in re_a:
    lis.append(i.attrs['href'])
#print(lis)

第三步:
获取要爬取的每个页面的内容

datas = []
for x in lis:
    dic = {}
    #请求详细页面
    ar = requests.get('https://www.runoob.com'+x,headers=headers).content.decode('utf-8')
    #解析为html文档
    soup_ar = BeautifulSoup(ar,'lxml')
    #查找练习内容,里面的内容都可以通过审查元素中的代码进行查找
    #a.查找标题
    dic['title'] = soup_ar.find(id='content').h1.text 
    #b.查找题目
    dic['m'] = soup_ar.find(id='content').find_all('p')[1].text
    #c.查找程序分析
    dic['cxfx'] = soup_ar.find(id='content').find_all('p')[2].text
    #d.查找程序源代码
    try:
         dic['code'] = soup_ar.find(class_='hl-main').text
    except Exception as e:
         dic['code'] = soup_ar.find('pre').text    

第四步:保存文件

#保存文件
    with open('100-py.csv','a+',encoding='utf-8') as file:
        file.write( dic['title'] +'\n')
        file.write( dic['m'] +'\n')
        file.write( dic['cxfx'] +'\n')
        file.write( dic['code'] +'\n')
        file.write('*'*50+'\n')#表示设置分割符号    

这就是一个简单的爬虫程序了,下面是自己跟着教程自己用另外两种匹配方式进行编写的
css

'''
获取URL(URL,是指“Uniform Resource Locator”的缩写,即统一bai资源定位符。)
表示网址
1.获取Python100的URL
2.练习的URL

'''
from bs4 import BeautifulSoup
import requests
import pandas as pd
url = 'https://www.runoob.com/python/python-100-examples.html'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    
}#通过在网址的界面点击审查元素之后network之后选择header的最后一行所获取到的
#发送请求
r = requests.get(url,headers=headers).content.decode('utf-8')#直接获取会造成乱码,对获取来的文件进行解码
#print(r)
#解析html文档
soup = BeautifulSoup(r,'lxml')  #解析文档为lxml模式
#print(type(soup))
#查找每个练习的a链接的herf属性获取对应的链接地址
re_a = soup.select('#content ul li a')  #返回的是100个a标签的列表
# print(re_a)
#创建一个列表保存url
lis = []
for i in re_a:
    lis.append(i.attrs['href'])
#print(lis)
'''
 2.根据获取的每个练习的链接地址来请求每个练习获得页面内容
'''
datas = []
for x in lis:
    dic = {}
#     #请求详细页面
    ar = requests.get('https://www.runoob.com'+x,headers=headers).content.decode('utf-8')
#     #解析为html文档
    soup_ar = BeautifulSoup(ar,'lxml')
#     #查找练习内容
     #a.查找标题
    dic['title'] = soup_ar.select('#content h1')[0].text
    print(dic['title'])
#     #b.查找题目
    dic['m'] = soup_ar.select('#content p')[1].text#表示p标签的第二个
    #print(dic['m'])
    #c.查找程序分析
    dic['cxfx'] = soup_ar.select('#content p')[2].text#表示p标签中的第三个
    print(dic['cxfx'])
    #d.查找程序源代码
    try:
         dic['code'] = soup_ar.find(class_='hl-main').text
    except Exception as e:
         dic['code'] = soup_ar.find('pre').text
            
    #datas.append(dic)
# data = pd.DataFrame(datas)
# data.to_csv('py-100.csv')
    #保存文件
    with open('100-py.csv','a+',encoding='utf-8') as file:
        file.write( dic['title'] +'\n')
        file.write( dic['m'] +'\n')
        file.write( dic['cxfx'] +'\n')
        file.write( dic['code'] +'\n')
        file.write('*'*50+'\n')#表示设置分割符号
        #print(dic)

xpath


'''
获取URL(URL,是指“Uniform Resource Locator”的缩写,即统一bai资源定位符。)
表示网址
1.获取Python100的URL
2.练习的URL

'''
from bs4 import BeautifulSoup
import requests
import pandas as pd
from lxml import etree
url = 'https://www.runoob.com/python/python-100-examples.html'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    
}#通过在网址的界面点击审查元素之后network之后选择header的最后一行所获取到的
#发送请求
r = requests.get(url,headers=headers).content.decode('utf-8')#直接获取会造成乱码,对获取来的文件进行解码
#print(r)
#解析html文档
soup = etree.HTML(r)
print(type(soup))
result = etree.tostring(soup,pretty_print=True,encoding='utf-8').decode('utf-8')
soup_url = soup.xpath('//div[@class="article-intro"]/ul/li/a/@href')
#print(soup_url)
'''
 2.根据获取的每个练习的链接地址来请求每个练习获得页面内容
'''
for x in soup_url:
    #请求详细页面
    ar = requests.get('https://www.runoob.com'+x,headers=headers).content.decode('utf-8')
       #解析为html文档
    html = etree.HTML(ar)
#      查找练习内容
#      a.查找标题
    title = html.xpath('string(//div[@class="article-intro"]/h1[1])')
    #print(title)
     #b.查找题目
    m = html.xpath('string(//div[@class="article-intro"]/p[2])')#表示p标签的第二个
    #print(m)
     #c.查找程序分析
    cxfx = html.xpath('string(//div[@class="article-intro"]/p[3])')#表示p标签中的第三个
    #print(cxfx)
    code = html.xpath('string(//*[@id="content"]/div/div/div)')
    #print(code)
       #保存文件
    with open('110-py.csv','a+',encoding='utf-8') as file:
        file.write( title +'\n')
        file.write( m +'\n')
        file.write( cxfx +'\n')
        file.write( code +'\n')
        file.write('*'*50+'\n')#表示设置分割符号
        #print(dic)  

最后是自己第一次尝试写的一个小的爬虫例子:

#自己写的第一个爬虫例子
from bs4 import BeautifulSoup
import requests
import pandas as pd
from lxml import etree
url = 'https://blog.youkuaiyun.com/mj_zm/article/details/108522966?utm_medium=distribute.pc_category.none-task-blog-hot-1.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-1.nonecase&request_id='
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    
}#通过在网址的界面点击审查元素之后network之后选择header的最后一行所获取到的
r = requests.get(url,headers=headers).content.decode('utf-8')#直接获取会造成乱码,对获取来的文件进行解码
#解析html文档
soup = etree.HTML(r)
#print(type(soup))
result = etree.tostring(soup,pretty_print=True,encoding='utf-8').decode('utf-8')
#即可获得全篇内容
tm = soup.xpath('string(//div[@id="content_views"])')
#print(tm1)
#保存内容
with open('first-py.csv','a+',encoding='utf-8') as file:
        file.write(tm +'\n')
爬虫基础(1)什么是网络爬虫 文章目录一. 认识网络爬虫二. 网络爬虫的组成三. 网络爬虫的类型1. 通用网络爬虫2. 聚焦网络爬虫3. 增量式网络爬虫4. 深层网络爬虫(1)静态网页(2)深层页面和表层页面(3)网络爬虫表单填写四. 网络爬虫的用途 一. 认识网络爬虫 说起网络爬虫,人们常常会用这样一个比喻:如果把互联网比喻成一张网,那么网络爬虫就可以认为是一个在网上爬来爬去的小虫子,它通过网页的链接地址来寻找网页,通过特定的搜索算法来确定路线,通常从网站的某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地 阅读详情

相关推荐

python网络爬虫学习笔记(1)爬虫概述 安装 Python基础

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

user_987654321的博客 1800

python

python知识点 一. Python下载 Python官网:https://www.python.org/ 二.Python安装 1.下载安装包 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 2.解压缩安装包 tar -zxvf Python-3.7.0.tgz 3.建立一个空文件夹,用于存放py...

boping7731的博客 250

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

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

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

网络爬虫基础知识与应用指南

网络爬虫(Crawler),又被称为网页蜘蛛(Spider)、网络机器人,是一种按照一定规则,自动抓取万维网信息的程序或脚本。常见的应用案例包括 Google、百度、Bing 等搜索引擎,它们通过爬虫技术从互联网上获取海量信息并建立索引。

wsygjbr的博客 2338

《Python 网络爬虫简易速速上手小册》第1章:Python 网络爬虫基础(2024 最新版)

网络爬虫,也称为网页蜘蛛或网页机器人,是一种自动化的网络程序,设计用来从万维网上下载网页,提取出有用的信息或者资源。HTML & CSS: 网页的骨架和皮肤。HTML 定义了网页的结构,而 CSS 则负责外观。掌握它们,你才能让爬虫知道去哪儿找数据。JavaScript: 许多现代网站利用 JavaScript 动态加载内容。了解基础的 JavaScript 及其如何影响网页内容的加载,对爬取动态内容至关重要。HTTP/HTTPS 协议: 这是爬虫与网站交流的语言。

江帅帅 3304

手把手教你配置MCAL中的CAN模块:从基础参数到实战避坑指南

本文提供了一份详尽的MCAL CAN模块配置指南,涵盖从基础参数设置到实战避坑的全过程。文章深入解析了CAN控制器核心参数、硬件对象配置、数据流处理及常见问题排查,并结合源码分析,帮助嵌入式开发者构建稳定高效的CAN通信链路,是汽车电子领域通信开发的实用参考。

weixin_29165465的博客 337

python基础及网络爬虫

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

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

SAR成像专栏目录

为方便大家阅读,我做了一个专栏目录,蓝色字有超链接,可以直接打开。 本专栏默认读者已具备雷达系统的基本知识或者已阅读过雷达导论专栏中的文章。 1. 概述 SAR成像概述 星载SAR的各项指标解读(史上最全) SAR成像算法的实现途径与算力分析 2. SAR成像原理与SAR系统简介 雷达与分辨率 SAR成像原理与方法 SAR图像的形成和处理 SAR系统设计 3. 点目标仿真 点目标仿真(一)—— 数学模型 点目标仿真(二)—— Matlab仿真 4. 成像算法 更新中 雷达导论专

7472

网络爬虫基础总结

网络爬虫基础总结网络爬虫1. 爬虫简介网页结构合理的创建标题,有助于目录的生成2.BeatufulSoup 解析网页3.更多请求/下载方式4.加速你的爬虫5.高级爬虫 这篇文章是对莫烦pyhton爬虫基础课进行一个总结,详细教程大家可以参考学习官网:https://morvanzhou.github.io/tutorials/data-manipulation/scraping/ 网络爬虫 对于网...

时光的博客 2969

工程级 RK3588 YOLOv5 Android 架构拆解:NPU 量化优化 + 多线程推理 + 跟踪算法源码

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

LXY_LOVE36的博客 130

通用抓取算法AnyGrasp(Graspnet)——本地部署并测试自定义输入数据

背景:GraspNet在数据采集方面,首先将相机固定到机械臂末端,对同一个场景拍摄256个不同的角度,同时场景中的每个物体都会提前采集好3D模型,之后将其投射到仿真环境中,在仿真环境中,对抓取位姿进行打标签,如此完成数据的采集。在运行官方的测试示例时,使用的是路径下的输入数据,可以分析下。color.png(输入):rgb图像(输出):输出的生成抓取位姿的图像depth.png(输入):和当前rgb图像对应的深度图像(保存格式是单通道uint16)meta.mat。

boss-dog 1330

网络爬虫基础

例如,通过爬虫持续抓取纽交所、纳斯达克、港交所等平台的股票价格、成交量、市盈率等实时数据,结合历史数据进行对比分析,构建价格波动模型。借助这些模型,投资者可以预测股票走势,把握投资时机,优化投资组合。网络爬虫技术凭借高效的数据抓取能力,深度渗透到金融业务的各个环节,从市场动态监测到风险精准把控,都离不开它的助力。通用网络爬虫,又称全网爬虫,旨在从互联网上尽可能多地抓取网页信息,覆盖各种类型和主题的网站。),在问题1的基础上,获取每部电影的导演、编剧、主演、类型、上映时间、片长、评分人数以及剧情简。

yusupali19的博客 1080

【Claude Code】Unable to connect to API 报错原因与排查解决全流程

深入分析 Claude Code 中 Unable to connect to API 系列报错的根因,涵盖 ECONNREFUSED、ECONNRESET、ETIMEDOUT 等 6 种变体,提供从网络连通性检测、代理配置到 LLM 网关路由的完整排查路径,帮助开发者快速恢复 Claude Code 的正常使用。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 2853

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

爬虫基础

2302_80755459的博客 2905

YOLO11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

YOLOv11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

魔改工程师的博客 4534

OTA 升级失败/回滚策略设计:打造安全可靠的双分区/断点续传/签名校验方案

双分区机制(A/B Partitioning)是OTA升级的“保险箱”。简单来说,设备存储分为两个分区:A分区(当前运行)和B分区(备用)。升级时,新固件写入B分区,A分区保持不变。如果升级成功,系统切换到B分区运行;如果失败,设备直接回滚到A分区,完全不受影响。这就像玩游戏存档:你打Boss前存了个档,万一挂了还能读档重来。双分区就是设备的“读档”机制,避免了变砖的尴尬。以Android设备为例,Google从Android 7.0开始强制引入A/B分区机制(Seamless Updates)。

大模型大数据攻城狮的专栏 1235

学 Java 网络爬虫,需要哪些基础知识?

说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少。有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic 。我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里...

平头哥的技术博文 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

网络爬虫理论基础

网络爬虫理论基础

Deng872347348的博客 1181

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python网络爬虫基础指南

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

运维人生 1355

网络爬虫基础知识

网络爬虫(Web Crawler 或 Spider)是一种自动化程序,用于在互联网上自动获取信息。它可以从一个或多个初始网页开始,读取网页内容,找到其中的链接,再通过这些链接找到下一个网页,如此循环,直到抓取完所有目标网页。

浪里个狼游记 1387

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

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

H188693的博客 1743

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

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

qq_20245171的博客 1947

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

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

2301_78217634的博客 1136

【Datawhale零基础网络爬虫学习笔记】

本文介绍了零基础网络爬虫的基本概念和学习笔记。爬虫技术可用于自动化获取网络数据,但需遵守robots.txt规范。文章对比了HTTP与HTTPS协议,解释了Web请求过程和服务器渲染与客户端渲染的区别。通过urllib模块示例演示了简单爬虫的实现,并介绍了requests模块的使用。此外,还探讨了请求与响应机制,包括请求头、响应状态码等关键要素,为后续爬虫学习奠定基础。

m0_53118662的博客 3500
下一篇: MYSQL必练50题(第一天 )
ZYXGW
博客等级 码龄7年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值