热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网页数据抓取与解析入门指南

本指南介绍了`requests`库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()`是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用`requests.get()`方法来获取HTML网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。

requests库的基本用法

     

request库的7个主要方法

requests.request() 构造一个请求,支撑以下各方法的基础方法
#获取HTML网页的主要方法,对应于HTTP的GET
requests.get(url,params,data,headers,proxies,COOKIEs,auth,verify) # params,data,headers,proxies,COOKIEs为字典类型,auth为元祖类型,verify为布尔类型参数
requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete() 向HTML页面提交删除请求,对应于HTTP的DELETE
几种属性
.states_code   返回状态码
.text 返回 html 属性
.headers 返回头部信息
.url 返回请求的链接

beautifulsoup库的基本用法

支持的解析器

支持python标准库、lxml HTML、lxml XML、html5lib四种解析器

用法:BeautifulSoup(markup,"解析器")#注意markup代表源代码,如果自己写的文本的话,注意价格str

比如:BeautifulSoup(markup,"lxml")


提取的方法


节点选择器

格式:解析后文本.节点

例如:

from bs4 import BeautifulSoup
soup=BeautifulSoup(html,'lxml')
print(soup.title) #输出的是 bs4.element.Tag
>>>>输出html文本中的title节点及其标签里的内容,

获取节点属性、提取信息:

例如:

soup.title.name #获得title节点的名字,即输出的为title,一般这么用 soup.title.parent.name
soup.title.['name'] #获取title节点name属性的值
soup.title.string #获得title节点的内容
soup.title.contents #获取title节点的直接子节点列表(既有子节点,又有子节点包含的文本)(列表类型)
soup.title.children #获取直接子节点(返回的是生成器类型)
soup.title.descendants #获取所有子孙节点
soup.title.parent /parents #获取父节点/祖先节点
soup.title.next_sibling/previous_sibling #获取下一个/前一个兄弟节点(同级节点)

方法选择器

find_all(name, attrs, recursive, text, ** kwargs) ,name表示节点名称、attrs为节点属性、text为节点内的文本 #匹配所有符合条件的节点
find() #匹配第一个符合条件的节点
例如:soup.find_all('div',id='content',class_='showtxt') #查找所有的属性id为content,class为showtxt的div节点

CSS选择器

select('节点')方法选择节点
例如:
title=soup.select('title ')#选择title节点
point_attrs=title['id'] #获得title节点的id属性的值
point_text=title.get_text() #获得title节点的文本

基本的爬取过程

先使用浏览器的检查功能,分析一下网页源代码,然后就是获取网页源代码,解析HTML信息。一般使用的请求库哟有urlib、requests。解析库有:beaytifulsoup、xpath、pyquery。存储:redies、mongodb、mysql。


文本保存

save_path = 'D://storyspider' #定义保存路径
if not os.path.exists(save_path):#如果没有这个路径就创建
os.mkdir(save_path)
with open(save_path + '/' + each_name + '.txt', 'a', encoding='utf-8')as f: #以追加的方式 写入
f.write('本文网址:' + each_url)


推荐阅读
  • 在使用 `requests` 库进行 HTTP 请求时,如果遇到 `requests.exceptions.SSLError: HTTPSConnectionPool` 错误,通常是因为 SSL 证书验证失败。解决这一问题的方法包括:检查目标网站的 SSL 证书是否有效、更新本地的 CA 证书库、禁用 SSL 验证(不推荐用于生产环境)或使用自定义的 SSL 上下文。此外,确保 `requests` 库和相关依赖项已更新到最新版本,以避免潜在的安全漏洞。 ... [详细]
  • 本文详细解析了 Python 2.x 版本中 `urllib` 模块的核心功能与应用实例,重点介绍了 `urlopen()` 和 `urlretrieve()` 方法的使用技巧。其中,`urlopen()` 方法用于发送网络请求并获取响应内容,而 `urlretrieve()` 方法则用于下载文件并保存到本地。文章通过具体示例展示了这两个方法在实际开发中的应用场景,帮助读者更好地理解和掌握 `urllib` 模块的使用。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • Python爬虫入门:深入解析HTTP协议与Requests库的应用
    Python爬虫入门:深入解析HTTP协议与Requests库的应用 ... [详细]
  • 本文深入解析了Django框架中的MVT(Model-View-Template)设计模式,详细阐述了其工作原理和应用流程。通过分析URL模式、视图、模型和模板等关键组件,读者将全面理解Django应用程序的架构体系,掌握如何高效地构建和管理Web应用。 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 深入解析HTTP网络请求API:从基础到进阶的全面指南
    本文全面解析了HTTP网络请求API,从基础到进阶,详细介绍了Android平台上的两种原生API——HttpUrlConnection和HttpClient。这两种API通过对底层Socket的封装,提供了高效、灵活的网络通信功能。文章不仅涵盖了基本的使用方法,还深入探讨了性能优化、错误处理和安全性等方面的高级主题,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 深入解析 Vue 中的 Axios 请求库
    本文深入探讨了 Vue 中的 Axios 请求库,详细解析了其核心功能与使用方法。Axios 是一个基于 Promise 的 HTTP 客户端,支持浏览器和 Node.js 环境。文章首先介绍了 Axios 的基本概念,随后通过具体示例展示了如何在 Vue 项目中集成和使用 Axios 进行数据请求。无论你是初学者还是有经验的开发者,本文都能为你解决 Vue.js 相关问题提供有价值的参考。 ... [详细]
  • 在今天的实践中,我深入学习了网页图像抓取技术,通过编写爬虫程序批量获取网站上的图片资源。具体来说,我选择了一个包含大量高质量图片的网站作为练习对象,并成功实现了将这些图片批量下载到本地存储。这一过程不仅提升了我对爬虫技术的理解,还增强了我的编程能力。 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • 本文将详细介绍如何利用JMeter高效执行API接口测试,涵盖JMeter的基础介绍、安装方法、中文环境配置、主要元件及其作用域和执行顺序等内容,并分享一系列实用的测试技巧,帮助读者全面掌握JMeter接口测试的全过程。 ... [详细]
author-avatar
mobiledu2502902777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有