使用Python进行爬虫的初学者指南(python爬虫怎么用)
off999 2024-10-26 12:10 38 浏览 0 评论
前言
爬虫是一种从网站上抓取大量数据的自动化方法。即使是复制和粘贴你喜欢的网站上的引用或行,也是一种web抓取的形式。大多数网站不允许你保存他们网站上的数据供你使用。因此,唯一的选择是手动复制数据,这将消耗大量时间,甚至可能需要几天才能完成。
网站上的数据大多是非结构化的。Web抓取有助于将这些非结构化数据,并将其以自定义和结构化的形式存储到本地或数据库中。如果您是为了学习的目的而抓取web页面,那么您不太可能会遇到任何问题,在不违反服务条款的情况下,自己进行一些web抓取来增强您的技能是一个很好的实践。
爬虫步骤
为什么使用Python进行Web抓取?
Python速度快得令人难以置信,而且更容易进行web抓取。由于太容易编码,您可以使用简单的小代码来执行大型任务。
如何进行Web抓取?
我们需要运行web抓取的代码,以便将请求发送到我们想要抓取的网站的URL。服务器发送数据并允许我们读取HTML或XML页面作为响应。代码解析HTML或XML页面,查找数据并提取它们。
下面是使用Python使用Web抓取提取数据的步骤
- 寻找您想要抓取的URL
- 分析网站
- 找到要提取的数据
- 编写代码
- 运行代码并从网站中提取数据
- 将所需格式的数据存储在计算机中
用于Web抓取的库
- Requests
- Beautiful Soup
- Pandas
- Tqdm
Requests是一个允许使用Python发送HTTP请求的模块。HTTP请求用于返回一个包含所有响应数据(如编码、状态、内容等)的响应对象
BeautifulSoup是一个用于从HTML和XML文件中提取数据的Python库。这适用于您喜欢的解析器,以便提供导航、搜索和修改解析树的惯用方法。它是专门为快速和高可靠的数据提取而设计的。
pandas是一个开源库,它允许我们在Python web开发中执行数据操作。它构建在Numpy包上,其关键数据结构称为DataFrame。DataFrames允许我们在观察数据行和变量列中存储和操作表格数据。
Tqdm是另一个python库,它可以迅速地使您的循环显示一个智能进度计—您所要做的就是用Tqdm(iterable)包装任何可迭代的。
演示:抓取一个网站
Step 1. 寻找您想要抓取的URL
为了演示,我们将抓取网页来提取手机的详细信息。我使用了一个示例(www.example.com)来展示这个过程。
Stpe 2. 分析网站
数据通常嵌套在标记中。分析和检查我们想要获取的数据被标记在其下的页面是嵌套的。要查看页面,只需右键单击元素,然后单击“inspect”。一个小的检查元件盒将被打开。您可以看到站点背后的原始代码。现在你可以找到你想要刮的细节标签了。
您可以在控制台的左上角找到一个箭头符号。如果单击箭头,然后单击产品区域,则特定产品区域的代码将在console选项卡中突出显示。
我们应该做的第一件事是回顾和理解HTML的结构,因为从网站上获取数据是非常重要的。网站页面上会有很多代码,我们需要包含我们数据的代码。学习HTML的基础知识将有助于熟悉HTML标记。
Step 3.找到要提取的数据
我们将提取手机数据,如产品名称、实际价格、折扣价格等。您可以提取任何类型的数据。为此,我们必须找到包含我们的数据的标记。
通过检查元素的区域来打开控制台。点击左上角的箭头,然后点击产品。您现在将能够看到我们点击的产品的特定代码。
Step 4. 编写代码
现在我们必须找出数据和链接的位置。让我们开始代码编写。
创建一个名为scrap.py的文件,并在您选择的任何编辑器中打开它。我们将使用pip安装上面提到的四个Python库。
第一个和主要的过程是访问站点数据。我们已经设置了该网站的URL,并访问了该网站。
url = 'https://www.example.com/products/mobiles-mobile-phones?sort=plrty'headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64)' 'AppleWebKit/537.36 (KHTML, like Gecko)' 'Chrome/64.0.3282.167 Safari/537.36' }result = requests.get(url, headers=headers,verify=True)Print(result)Output: <Response [200]>
如果你看到上面的结果,那么你已经成功访问了这个网站。
Step 5. 运行代码并从网站中提取数据
现在,我们将使用Beautifulsoup解析HTML。
soup = BeautifulSoup(result.content, 'html.parser')如果我们打印soup,然后我们将能够看到整个网站页面的HTML内容。我们现在要做的就是过滤包含数据的部分。因此,我们将从soup中提取section标记。
section=soup.find("section", class_='js-section').find_all("div",{'class':'product-desc-rating})Print(section)结果如下:
现在,我们可以在div的“product-desc-rating”类中提取移动电话的详细信息。我已经为移动电话的每个列细节创建了一个列表,并使用for循环将其附加到该列表中。
Products = []url = []Actual_Price = []Discounted_Price = []Discount = []产品名称出现在HTML中的p标记(段落标记)之下,而product_url则出现在锚标记之下。
HTML锚标记定义了一个超链接,将一个页面链接到另一个页面。它可以创建到另一个web页面以及文件、位置或任何URL的超链接。“href”属性是HTML标记最重要的属性。以及指向目标页面或URL的链接。
然后我们将提取实际价格和折扣价格,它们都出现在span标签中。标签用于对内联元素进行分组。并且标签本身不提供任何视觉变化。最后,我们将从div标签中提取报价百分比。div标记是块级标记。它是一个通用的容器标签。它用于HTML的各种标记组,以便可以创建节并将样式应用于它们。
for t in tqdm(section): product_name = t.p.text Products.append(product_name) product_url = t.a['href'] url.append(product_url) original_price = t.span.getText() Actual_Price.append(original_price) discounted_price = t.find('span', class_ = 'lfloat product-price').getText() Discounted_Price.append(discounted_price) try: product_discount = t.find('div', class_ = 'product-discount') Discount.append(product_discount.text) except Exception as e: product_discount = None Discount.append(product_discount)Step 6. 以所需的格式存储数据
我们已经提取了数据。我们现在要做的就是将数据存储到文件或数据库中。您可以按照所需的格式存储数据。这取决于你的要求。在这里,我们将以CSV(逗号分隔值)格式存储提取的数据。
= pd.DataFrame({'Product Name':Products,'Actual_Price':Actual_Price,'Discounted_Price':Discounted_Price,'Offer_Percentage':Discount,'Product_url':url}) df.to_csv(' products.csv', index=False, encoding='utf-8')参考:
https://www.agiratech.com/web-scraping-using-python
相关推荐
- 系统小说排行榜完本经典之作
-
超级兑换系统超级修仙超级客栈系统貌似高手在异界重生之修仙系统超级修仙系统异界之兑换成圣(贱圣VS奸神)+超级兑换(火山飞狐)+穿越之无敌兑换(开心小帅)+兑换器修仙(轻舞流芒)+...
- 手机能修复u盘吗(手机修复u盘工具下载)
-
1.在手机上可以恢复u盘,当手机SD卡或U盘插入电脑中时,如果提示“文件或目录损坏且无法读取”的信息时,我们首先需要对手机SD卡或U盘进行目录修复操作。插入待修复的U盘,打开“我的电脑”,找到Sd卡...
- 怎么查电脑显卡的信息(电脑怎么查看显卡信息)
-
要查看电脑的显卡信息,可以按照以下步骤进行操作:1.使用快捷键Win+R打开“运行”对话框。2.在运行对话框中输入“dxdiag”并点击“确定”按钮,打开“DirectX诊断工具”。3....
- 电脑上找不到输入法怎么办(电脑中找不到输入法)
-
如果电脑上不显示输入法,您可以尝试以下解决方法:1.检查输入法设置:首先,您可以检查电脑的输入法设置。在Windows系统中,您可以点击任务栏右下角的输入法图标(一般为字母或语言标志),然后选择“显...
- win10系统本地连接在哪里(window10的本地连接在哪)
-
要找到本地连接,可以按照以下步骤在Windows10系统中进行:1.点击“开始”菜单,然后选择“设置”(齿轮图标)。2.在设置窗口中选择“网络和Internet”选项。3.在“网络和Inter...
- win10有32位版本吗(win10还有32位的吗)
-
64位版本好。32位的操作系统处理数据的能力较慢,支持的内存小,并且只支持基于32位的软件,不能运行64位的软件。64位的操作系统处理数据的能力较快,支持的内存较大,能运行32位的软件,也能运行6...
- 账号密码大全真的(各种账号密码)
-
英雄号,是4399官方版本的账号:1973024549密码:123456这是自己的,不想玩了,送给看到的有缘人吧^o^1、默认的机顶盒密码6321,也可以进行更改,方法:首先,通过搜索“中国电信”...
- windows server2019(windowsserver2019密钥激活码)
-
WindowsServer2019那是给服务器用的系统。服务器的作用是计算数据,而不是图像处理。所以WindowsServer2019里面精简了大量有关图形的功能。办公和打游戏是需要图像处理的...
- 一键还原系统怎么卸载(一键还原系统软件怎么用)
-
打开控制面板,点击“系统”,再点击“高级系统设置”,再点“高级”标签,再点“启动和故障恢复”里的“设置”,,出来新对话框,把“默认操作系统“选到”WIN10,然后下面的”显示操作系统列表的时间“选到0...
- 电脑装两个系统好不好(电脑装两个系统好不好用)
-
安装双系统的好处是根据应用不同,可以选用不同的操作系统,坏处是每次开机后都要对操作系统进行选择,否则就会进入默认操作系统1苹果电脑装双系统是不错的选择。2装双系统可以让用户在同一台电脑上同时运行不...
- office2010以上版本(office2010各版本区别)
-
该版本不是最高的,但是可以满足日常办公,放心使用。DOC文件只有WORD能打开,估计你用的版本不是正版或有什么问题,请参考:microsoftoffice软件是装了高版本软件就自动卸载(或覆盖,建议...
- 强制申诉qq成功人工客服(qq申诉人工秒成功 客服电话)
-
QQ密码申诉结果,一般会在4小时内发到用户的联系邮箱。帐号申诉,是指通过提交个人资料及帐号使用信息,来证明用户是帐号主人的方式。申诉成功后可修改密码或密保。申诉结果一般会在4小时内发到用户的联系邮箱。...
- google框架一键安装(谷歌框架三件套一键安装)
-
一加手机自带手机框架,需要下载Play商店激活。1、google服务框架是可以在系统软件里面可以删除的一个APK程序,但现在有很多的软件和游戏需要谷歌服务的支持,如果没有安装或者又删除系统软件的朋友可...
- office2010家庭和学生版密钥
-
1.MicrosoftExcel2010家庭版的产品密钥是需要购买正版软件时提供的一串字符序列。2.这是为了确保用户使用正版软件,并且能够享受到软件的全部功能和服务。3.为了获得Micros...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
