python提取网页中p标签中的内容_使用Python进行爬虫的初学者指南
前言
爬虫是一种从网站上抓取大量数据的自动化方法。即使是复制和粘贴你喜欢的网站上的引用或行,也是一种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:
如果你看到上面的结果,那么你已经成功访问了这个网站。
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
python提取网页中p标签中的内容_使用Python进行爬虫的初学者指南相关推荐
- 用Python提取解析pdf文档中内容
用Python提取解析pdf文档中内容 文章目录: 参考: 1.https://blog.csdn.net/tmaczt/article/details/82876018 # Tika库 2.http ...
- Python 提取网页正文,将网页转为图片!
Python 提取网页正文,将网页转为图片!!! 用到python的newspaper库 from newspaper import Article news = Article(link.strip ...
- python 提取网页正文_用Python写个爬虫小程序,给女朋友每日定时推送睡前小故事...
↑ 关注 + 星标 ,每天学Python新技能后台回复[大礼包]送你Python自学大礼 导读:这篇文章利用简单的Python爬虫.邮件发送以及定时任务实现了每天定时发送睡前小故事的功能,是一篇步骤详 ...
- java a标签正则_正则表达式:java中婚配HTML中a标签中的中文字符
正则表达式:java中匹配HTML中a标签中的中文字符 今天群里一位朋友问到了一个正则表达式的问题,有如下内容: 特432 453543 a1特123你好123吗? 特2 标签中的文字现在要匹配出内容 ...
- 视频网站中video标签中blob:http
视频网站中video标签中blob:http 一.问题场景 想下载知乎视频资源,却发现视频链接是这个样子的 blob:https://v.vzuu.com/b6146956-6e52-406d-890 ...
- css中a标签中去掉下划线注意事项
需求文件 css中a标签中去掉下划线注意事项 对于css中a 标签去掉下划线有一个注意事项代码如下: <!DOCTYPE html> <html><head>< ...
- 去掉h5播放器中voide标签中的下载按钮
去掉H5播放器中voide标签中的下载按钮,参考代码: <video width="320" height="240" controls> & ...
- python提取网页中表格数据_Python2 BeautifulSoup 提取网页中的表格数据及连接
网址:http://quote.eastmoney.com/ce- 要做的是提取网页中的表格数据(如:板块名称,及相应链接下的所有个股,依然是个表格) 暂时只写了这些代码: import urllib ...
- Python:提取网页中的电子邮箱
我们使用其它编程语言处理在文本中查找"类似"的内容时,往往使用正则表达式,Python在网页上找出所有"类似"的内容,也是要用正则表达式. 在Python中,使 ...
最新文章
- 【工具】ApkTools
- 数据库SQL的分组函数
- [LintCode] Single Number 单独的数字
- python断言区间_断言整数在范围内
- 如何在64位的Linux中运行32位的应用程序
- java继承与多态_Java继承与多态
- Myeclipse2015把web项目添加至tomcat中,添加列表中却没有想要添加的项目
- ubuntu 更新源 或者 apt-get install 出错404 not found ,Failed to fetch
- STM32基础知识及环境搭建
- 路由器的硬件测试软件,路由器也跑分?路由器测试App路小胖体验
- 申请德国农工大学计算机案例,德州农工大学世界排名怎么样?
- 思科防火墙解析(ASA)
- python去除重复单词_Python重复的单词
- UVA-12555 - Baby Me(控制精度)
- GPIB编程控件指令
- java使用谷歌api翻译读写Excel
- 暑期参加CSDN编程竞赛的些许心得体会
- 团队管理5 | 管理风格
- 跳出while循环的三种方法
- 孢子框架-互联网金融平台微服务架构设计(转)
热门文章
- 从网络字节流中提出整数
- 应用计算机网络的方面,计算机网络技术在电子信息工程中的应用研究(1)
- linux z是什么文件夹,Linux znew初学者命令实例教程
- python def函数_Python教程之Lambda表达式知识概述
- elasticsearch 6.x (一) 部署 windows入门 spingboot连接
- npm run dev/build/serve
- Android 微信登录
- 计算机里创建本地磁盘分区,大神教你如何将本地硬盘进行分区!
- ie11不兼容 html编辑器,ie11兼容性视图护驾浏览网页
- activiti5.22 springboot 流程引擎 实战全过程