首页 > 编程语言 >网络爬虫 Python 第二课

网络爬虫 Python 第二课

时间:2024-11-16 09:19:22浏览次数:3  
标签:第二课 Python 标签 爬虫 查找 article div class

  • BeautifulSoup 高级用法

    • 标签查找与筛选:除了简单地通过标签名查找(如 soup.find('div') 查找第一个 div 标签),还可以利用属性来更精准地查找。例如,如果要查找所有 class 属性为 article 的 div 标签,可以使用 soup.find_all('div', class_='article') 。这里注意 class_ 后面的下划线,是为了避免和 Python 的关键字 class 冲突。
    • 层级关系查找:网页中的标签往往是有层级嵌套关系的,BeautifulSoup 可以方便地根据层级来查找元素。比如要查找 div 标签下的 p 标签,可以这样写 soup.div.find_all('p') ,先定位到 div 标签,再查找其内部的所有 p 标签。还可以使用 soup.select() 方法,通过 CSS 选择器来进行更灵活的层级元素查找,像 soup.select('div.article p') 就是查找 class 为 article 的 div 标签下的所有 p 标签。
    • 获取标签内容与属性:讲解如何获取标签包裹的文本内容(如 tag.text )以及获取标签的各种属性值(比如对于 <a href="https://example.com">链接</a> 这样的 a 标签,可以通过 tag['href'] 来获取 href 属性的值)。
  • XPath 解析

    • 介绍 XPath 概念:XPath 是一种在 XML 文档中查找信息的语言,由于 HTML 可以看作是 XML 的一种特殊形式,所以也能用 XPath 来解析网页结构定位元素。它通过路径表达式来选取节点,比如 /html/body/div 表示从根节点 html 开始,依次选择 body 节点下的 div 节点。
    • 在 Python 中使用(结合 lxml 库):示例代码展示如何安装和使用 lxml 库来通过 XPath 解析网页,像下面这样:

from lxml import etree
import requests

url = "https://www.example.com"
response = requests.get(url)
html = etree.HTML(response.text)
result = html.xpath('//div[@class="article"]/p/text()')  # 选取class为article的div下的p标签的文本内容
print(result)

二、处理多种网页数据类型

  • 图片、链接等资源的提取

    • 图片提取:讲解如何从网页中找出所有图片的链接,通常图片会放在 <img> 标签里,通过 src 属性来指定图片的 URL。可以用 BeautifulSoup 查找所有 img 标签(如 soup.find_all('img') ),然后遍历获取每个 img 标签的 src 属性值,这些值就是图片的链接,后续可以进一步下载图片到本地等操作。
    • 链接提取:对于网页中的超链接( <a> 标签),同样可以通过查找 a 标签,并获取 href 属性值来提取链接,可用于构建站内链接的爬虫,顺着这些链接去爬取网页的其他页面等。
  • 数据格式化与清洗

    • 去除空格、特殊字符:爬取到的文本数据可能存在前后空格或者一些不需要的特殊字符,比如换行符 \n 等,可以使用 Python 的字符串方法(如 strip() 去除两边空格、 replace() 替换特定字符等)来进行清理。
    • 数据类型转换:如果爬取的数据要用于后续的计算、分析等,可能需要进行数据类型的转换,比如把字符串形式的数字转换为整型( int() 函数)或者浮点型( float() 函数)等操作。

三、应对简单的反爬虫机制

  • 设置请求头(Headers):很多网站会通过检测请求头中的信息(如 User-Agent ,它代表了客户端浏览器等相关信息)来判断请求是否来自正常的浏览器访问。可以通过在 Requests 库中设置合适的请求头,模拟真实浏览器请求,示例如下:
  • import requests
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/5.25.25 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
    }
    url = "https://www.example.com"
    response = requests.get(url, headers=headers)
    print(response.text)

  • 控制请求频率:避免过于频繁地向网站发送请求,以免触发网站的反爬虫限制,可以使用 time 模块来设置每次请求之间的时间间隔,像这样:
  • 通过这些内容的讲解,能让学习者在网络爬虫 Python 的学习道路上更进一步,掌握更实用的爬虫技能,为后续处理更复杂的爬虫项目打下基础。

标签:第二课,Python,标签,爬虫,查找,article,div,class
From: https://blog.csdn.net/2301_78398877/article/details/143808346

相关文章

  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘要随着计算机科学技术日渐成熟,人们已经深刻认识到了计算机功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用。通过管理系统在电脑上的应用,人们能更好的管理信息,储存数据。为了能够提供游戏商城的方便性,开发了基于vue的游戏网站。此游戏网站......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,招聘网站当然也不能排除在外。招聘网站是以实际运用为开发背景,运用软件工程开发方法,采用互联网技术构建的一个管理系统。整个开发过程首先对软件系统进行需......
  • 计算机毕业设计项目推荐,SSM山西能源学院教室管理系统81671(开题答辩+程序定制+全套文案
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,山西能源学院教室管理系统当然也不能排除在外。山西能源学院教室管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用 SSM技术构建的一个管理系......
  • (免费源码)计算机毕业设计必看必学 原创程序 java、PHP、python、文案全套、毕设成品等
    摘要由于数据库和数据仓库技术的快速发展,停车场管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。停车场管理系统对处理对象和服务对象,自身的系统结构,处理能力,都将适应技术发展的要求发生重大的变化。停车场管理系统除了具有共享系统的全部功能以外,能......
  • Python 网络爬虫入门教程
    引言网络爬虫(WebCrawler)是一种通过编程从互联网上抓取数据的技术,常用于数据分析、信息采集等任务。Python作为一门功能强大且易于使用的编程语言,拥有丰富的爬虫库和工具,如Requests、BeautifulSoup和Scrapy,使得网络爬虫的开发变得更加高效便捷。本文将以一个简单的实例,介......
  • 电波诡影 Python
    Pythora的天空永远闪烁着诡异的蓝色光芒,似乎有某种未知的能量在星球表面流动。秦煜抬起头,呆望着这片异样的天空已经有一会儿了。透过奇形怪状的植被的缝隙和漂浮的尘雾,几颗星星在闪烁的蓝光背景下若隐若现。自从上次的项目结束后,秦煜总觉得心绪不宁,尤其是在夜晚。空气中弥漫着一......
  • 【python系列】python数据类型之字符串
    1.前言字符串是编程中最常用的数据类型,这章需要针对字符串进行讲解。字符串的定义:字符串(英语:string),是由零个或多个字符组成的有限序列。——Wikipediapython官方文档:https://docs.python.org/zh-cn/3.10/library/stdtypes.html#text-sequence-type-str字符串是由Un......
  • 基于大数据 Python 歌曲筛选爬虫数据分析可视化系统(源码+LW+部署讲解+数据库+ppt)
    !!!!!!!!!选题不知道怎么选不清楚自己适合做哪块内容都可以免费来问我避免后期給自己答辩找麻烦增加难度(部分学校只有一次答辩机会没弄好就延迟毕业了)会持续一直更新下去有问必答一键收藏关注不迷路源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:......
  • python课程设计图书管理系统
    带有登录以及功能两层结构的图书管理系统,具有管理员模式与普通用户模式users={'管理员':{'password':'123456','role':'admin'}}books={'明朝那些事儿':{'price':20,'information':'无'}}books_list=[]d......
  • 基于python+django的Spark的国漫推荐系统的设计与实现
    前言基于python+django的Spark国漫推荐系统能为国漫爱好者提供精准的内容推荐。系统先收集大量国漫数据,包括国漫名称、类型、作者、制作公司、评分、播放量、剧情简介、人物设定等信息。利用Spark的分布式计算能力对这些数据进行处理和存储。在用户方面,当新用......