0

0

使用 JavaScript 提取动态网页内容

霞舞

霞舞

发布时间:2025-10-26 11:26:14

|

401人浏览过

|

来源于php中文网

原创

使用 javascript 提取动态网页内容

本文旨在介绍如何从使用 JavaScript 动态生成内容的网页中提取数据。通过分析网页源代码,定位关键数据,并利用正则表达式工具提取所需信息,为网络爬虫开发提供一种解决方案。

对于一些网站,其部分内容并非直接包含在 HTML 源代码中,而是通过 JavaScript 动态生成。这给数据抓取带来了一定的挑战。本文将介绍一种针对这种情况的解决方案,即通过分析网页源代码,定位包含数据的 JavaScript 代码片段,并从中提取所需信息。

分析网页源代码

首先,我们需要查看目标网页的源代码。可以通过浏览器自带的开发者工具(通常按 F12 键打开)或者使用 curl 等命令行工具获取网页的 HTML 内容。

立即学习Java免费学习笔记(深入)”;

在源代码中,我们需要寻找包含目标数据的 JavaScript 代码。一种常用的方法是搜索目标数据中独有的字符串,例如,在示例中,我们可以搜索 event=479 或 event=643。

定位数据

通过搜索,我们可能找到一个包含 JSON 格式数据的 JavaScript 代码片段。例如:

{
   "icon": "calendar_weekendmistsofpandariastart",
   "name": "Timewalking Dungeon Event",
   "side": "both",
   "url": "/event=643/timewalking-dungeon-event"
}

这个 JSON 对象包含了我们想要抓取的信息,例如活动名称、图标 URL 和活动 URL。

提取数据

一旦我们找到了包含数据的 JavaScript 代码片段,就可以使用正则表达式或其他字符串处理方法来提取所需的信息。

WeWedding婚纱影楼小程序
WeWedding婚纱影楼小程序

婚纱影楼小程序提供了一个连接用户与影楼的平台,相当于影楼在微信的官网。它能帮助影楼展示拍摄实力,记录访客数据,宣传优惠活动。使用频率高,方便传播,是影楼在微信端宣传营销的得力助手。功能特点:样片页是影楼展示优秀摄影样片提供给用户欣赏并且吸引客户的。套系页是影楼根据市场需求推出的不同套餐,用户可以按照自己的喜好预定套系。个人中心可以查看用户预约的拍摄计划,也可以获取到影楼的联系方式。

下载

例如,我们可以使用以下正则表达式来提取 JSON 对象:

import re

html_content = """
// Some other javascript code
{
   "icon": "calendar_weekendmistsofpandariastart",
   "name": "Timewalking Dungeon Event",
   "side": "both",
   "url": "/event=643/timewalking-dungeon-event"
}
// Some other javascript code
"""

pattern = re.compile(r'\{.*?\"url\": \"\/event=\d+\/.*?\".*?\}', re.DOTALL)
match = pattern.search(html_content)

if match:
    json_data = match.group(0)
    print(json_data)
else:
    print("No JSON data found.")

这段代码首先定义了一个包含 JSON 对象的 HTML 字符串。然后,它使用正则表达式 \{.*?\"url\": \"\/event=\d+\/.*?\".*?\} 来匹配 JSON 对象。re.DOTALL 标志使得 . 可以匹配换行符,从而可以匹配多行 JSON 对象。

如果匹配成功,match.group(0) 将返回匹配到的 JSON 字符串。然后,我们可以使用 json.loads() 函数将 JSON 字符串转换为 Python 字典,并从中提取所需的信息。

完整示例(Python)

import re
import requests
import json

def extract_data(url):
    """
    从网页源代码中提取 JSON 数据。
    """
    try:
        response = requests.get(url)
        response.raise_for_status()  # 检查请求是否成功

        html_content = response.text

        pattern = re.compile(r'\{.*?\"url\": \"\/event=\d+\/.*?\".*?\}', re.DOTALL)
        matches = pattern.findall(html_content)

        data = []
        for match in matches:
            try:
                json_data = json.loads(match)
                data.append(json_data)
            except json.JSONDecodeError:
                print(f"Error decoding JSON: {match}")

        return data

    except requests.exceptions.RequestException as e:
        print(f"Error fetching URL: {e}")
        return None


if __name__ == "__main__":
    url = "https://www.wowhead.com/today-in-wow"
    extracted_data = extract_data(url)

    if extracted_data:
        for item in extracted_data:
            print(f"Name: {item['name']}")
            print(f"URL: {item['url']}")
            print("-" * 20)
    else:
        print("No data extracted.")

这段代码首先定义了一个 extract_data 函数,该函数接受一个 URL 作为参数,并返回一个包含 JSON 数据的列表。该函数首先使用 requests.get() 函数获取网页的 HTML 内容。然后,它使用正则表达式来匹配 JSON 对象,并使用 json.loads() 函数将 JSON 字符串转换为 Python 字典。最后,它将 JSON 字典添加到列表中,并返回该列表。

在 if __name__ == "__main__": 块中,我们调用 extract_data 函数来提取数据,并打印提取到的数据。

注意事项

  • 网站结构变化: 网站的结构可能会发生变化,导致正则表达式失效。因此,需要定期检查和更新正则表达式。
  • 反爬虫机制: 某些网站可能会使用反爬虫机制来阻止数据抓取。例如,网站可能会限制请求频率或使用 CAPTCHA 验证。需要采取相应的措施来绕过这些反爬虫机制。
  • 法律和道德: 在抓取数据之前,请务必阅读网站的robots.txt文件和使用条款,并遵守相关的法律和道德规范。

总结

本文介绍了一种从使用 JavaScript 动态生成内容的网页中提取数据的方法。该方法包括分析网页源代码、定位数据和提取数据。通过这种方法,我们可以抓取到一些无法通过传统方法抓取的数据。但是,需要注意网站结构的变化、反爬虫机制以及相关的法律和道德规范。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

778

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

685

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

769

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

739

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1445

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

571

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

580

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

751

2023.08.11

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

1

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.1万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号