码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python爬虫涨姿势板块


    Python有许多用于网络爬虫和数据采集的库和框架。这些库和框架使爬取网页内容、抓取数据、进行数据清洗和分析等任务变得更加容易。以下是一些常见的Python爬虫库和框架:

    1. Beautiful Soup: Beautiful Soup是一个HTML和XML解析库,用于从网页中提取数据。它提供了许多方法来导航和搜索文档树,从而轻松提取所需的信息。

    2. Requests: Requests是一个HTTP库,用于向网站发送HTTP请求。它使得下载网页内容变得非常容易,可以与其他库(如Beautiful Soup)结合使用来处理和解析页面内容。

    3. Scrapy: Scrapy是一个强大的Web爬虫框架,用于爬取网站和抓取数据。它提供了一整套工具和功能,包括页面爬取、数据存储、数据清洗和导出。

    4. Selenium: Selenium是一个自动化测试工具,但也可用于Web爬虫。它模拟浏览器行为,允许爬取JavaScript生成的内容,执行交互操作,以及处理需要用户输入的网站。

    5. Scrapy-Redis: 这是Scrapy框架的一个扩展,用于支持分布式爬取,将数据存储在Redis数据库中。

    6. PyQuery: 类似于Beautiful Soup,PyQuery是一个库,用于解析HTML和XML文档,但它使用jQuery选择器语法。

    7. Gevent: Gevent是一个用于异步网络编程的库,可用于构建高性能的网络爬虫。它可以轻松处理数千个并发请求。

    8. Apache Nutch: Nutch是一个开源的网络搜索引擎,也可以用作爬虫框架。它支持大规模爬取和数据处理。

    9. Splash: Splash是一个JavaScript渲染服务,可用于爬取需要JavaScript渲染的页面。它可以与Scrapy等框架一起使用。

    10. Tornado: Tornado是一个网络框架,也可用于构建高性能的异步爬虫。

    Beautiful Soup

    下面是一个使用Beautiful Soup进行简单网页爬取的Python示例。在此示例中,我们将使用Beautiful Soup来提取并显示指定网页的标题和所有链接的文本和URL。

    首先,确保您已经安装了Beautiful Soup,您可以使用pip install beautifulsoup4来安装它。

    import requests
    from bs4 import BeautifulSoup
    
    # 指定要爬取的网页URL
    url = "https://www.sina.com.cn/"  # 请将网址替换为您要爬取的网页
    
    # 发送HTTP GET请求并获取页面内容
    response = requests.get(url)
    response.encoding = 'utf-8'  # 指定字符编码为 UTF-8
    # 使用Beautiful Soup解析HTML内容
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 提取页面标题
    title = soup.title.string
    print("网页标题:", title)
    
    # 提取并显示所有链接的文本和URL
    links = soup.find_all('a')  # 查找所有标签
    
    for link in links:
        link_text = link.text
        link_url = link.get('href')  # 获取链接的URL
        print(f"链接文本: {link_text}\n链接URL: {link_url}\n")
    
    # 关闭HTTP连接
    response.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    首先使用requests.get(url)发送HTTP GET请求来获取指定网页的内容。然后,我们使用Beautiful Soup来解析HTML内容。我们提取了页面标题,并找到了所有的链接,然后逐个提取链接的文本和URL。最后,我们关闭了HTTP连接。

    通常,您会使用Beautiful Soup来更深入地分析页面内容,找到特定元素,例如表格、列表或段落,以提取所需的数据。根据要爬取的网页的结构和需求,您可以使用Beautiful Soup来自定义更复杂的爬虫。

    结合XPath

    import requests
    from bs4 import BeautifulSoup
    from lxml import html
    
    # 发送HTTP请求,获取页面内容
    url = "https://www.sina.com.cn/"
    response = requests.get(url)
    if response.status_code == 200:
        # 解析页面内容
        soup = BeautifulSoup(response.text, 'html.parser')
    
        # 转换Beautiful Soup对象为lxml对象
        root = html.fromstring(str(soup))
    
        # 使用XPath查询来获取所有链接
        links = root.xpath('//a')
    
        # 打印所有链接
        for link in links:
            href = link.get('href')
            if href:
                print(href)
    else:
        print("Failed to retrieve the page. Status code:", response.status_code)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    lxml 是一个强大且高性能的Python库,用于处理XML和HTML文档。它提供了方便的API来解析、操作和构建XML文档。lxml 基于 C 语言的 libxml2 和 libxslt 库,因此它具有出色的性能和稳定性。
    以下是 lxml 的一些主要特点和用法:1. 解析XML和HTML文档:lxml 可以用于解析标准的XML和HTML文档,包括处理各种复杂的文档结构和标签嵌套。2. XPath 支持:lxml 支持XPath,允许你使用XPath表达式来定位和选择文档中的元素。这使得数据提取和文档导航变得非常方便。3. ElementTree API:lxml 提供了 ElementTree API 的实现,这使得文档的处理更加易于理解和操作。4. HTML 清理和解析:lxml 提供了功能强大的 HTML 清理工具,允许你将不规范的 HTML 转换为规范的 XML,以便进一步处理。5. HTML 生成:lxml 也可以用于创建和生成 XML 和 HTML 文档,包括添加元素、属性和文本。6. 高性能:lxml 的 C 语言底层库使其具有出色的性能,适用于处理大型文档和高吞吐量的应用。7. 验证和模式检查:lxml 允许你验证 XML 文档是否符合给定的模式或 DTD(文档类型定义)。

    Scrapy

    Scrapy 是一个功能强大的Python网络爬虫框架,用于抓取和提取网站上的数据。下面是一个简单的 Scrapy 实例,用于爬取特定网站上的文章标题和链接。首先,确保你已安装 Scrapy。

    1. 首先,确保你已经安装了 Scrapy。如果没有安装,你可以使用以下命令安装 Scrapy:
    pip install scrapy
    
    • 1

    然后,创建一个 Scrapy 项目。在命令行中执行以下命令:

    scrapy startproject myproject
    
    • 1

    这将创建一个名为 “myproject” 的 Scrapy 项目目录。

    1. 进入项目目录:
    cd myproject
    
    • 1
    1. 创建一个爬虫。在命令行中执行以下命令,其中 “example_spider” 是爬虫的名称:
    scrapy genspider example_spider example.com
    
    • 1

    这将创建一个名为 “example_spider” 的爬虫,并指定要爬取的网站域名为 “example.com”。

    1. 打开 “myproject/spiders/example_spider.py” 文件,编辑爬虫的规则和抓取逻辑。下面是一个简单的示例,用于爬取 “example.com” 网站上的标题和链接:
    import scrapy
    
    class ExampleSpider(scrapy.Spider):
        name = 'example_spider'
        start_urls = ['http://www.example.com']
    
        def parse(self, response):
            for entry in response.xpath('//h2/a'):
                yield {
                    'title': entry.xpath('text()').get(),
                    'link': entry.xpath('@href').get()
                }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. 运行爬虫。在项目目录中执行以下命令:
    scrapy crawl example_spider
    
    • 1

    这将启动爬虫并开始抓取 “example.com” 网站上的信息。抓取的结果将显示在终端上。

    Scrapy 具有丰富的功能和配置选项,可根据你的需求进行进一步定制。你还可以配置数据的存储、数据处理、请求头、中间件等。请查阅 Scrapy 文档以获取更多信息和示例:https://docs.scrapy.org/en/latest/index.html

  • 相关阅读:
    IEEE的论文哪里可以下载?
    Java阿里云发送短信
    荧光标记氨基酸:荧光标记L-苯丙氨酸乙酯盐酸盐,L-phenylalanine ethylester labeled
    0X0-基于Sklearn的机器学习入门:聚类(上)
    现代化数据架构升级:毫末智行自动驾驶如何应对年增20PB的数据规模挑战?
    Handler的message分为三种
    Python:实现recursive bubble sor递归冒泡排序算法(附完整源码)
    阿里云国际版邮件服务套餐购买流程
    轻松打造自己的ChatGPT应用,AI应用,源码附赠
    【树莓派不吃灰】Linux篇⑨ 学习 磁碟配额(Quota)与进阶文件系统管理(核心概念)
  • 原文地址:https://blog.csdn.net/u011095039/article/details/133982701
  • 最新文章
  • Midscene 实战:告别 XPath,用自然语言实现 UI 自动化测试
    SolonCode CLI 的心智记忆功能:让 AI 编程助手越用越懂你
    《觉醒时刻:AI Agent引爆企业效率革命》第二章
    凌晨告警排查记:一次AWS EBS磁盘IO利用率100%的真相
    Linux 系统中定位与设置 JAVA_HOME 目录
    程序员逼格拉满!ccstatusline:让你的 Claude Code 状态栏直接封神!
    深度学习进阶(二十三)偏置型 RPE
    OpenCode狗都不用
    你的Agent API还在裸奔?从认证到沙箱,我用FastAPI搭了几道防线
    13、PushbackInputStream和StreamTokenizer的源码分析和使用方法详细分析
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号