python - BeautifulSoup 提取脚本变量数据
问题描述
我正在尝试提取这只股票的名称。
该变量从 var followObjTitle 中读取。
网址:https ://www.nasdaq.com/symbol/aapl
from bs4 import BeautifulSoup
import requests
import re
import json
with requests.Session() as c:
nasdaq_baseurl = 'https://www.nasdaq.com/symbol/'
nasdaq_url = nasdaq_baseurl.__add__("AAPL")
url_fetch = c.get(nasdaq_url)
soup = BeautifulSoup(url_fetch.text, 'html.parser')
pattern = re.compile("var followObjTitle = '(.*?)';", re.MULTILINE | re.DOTALL)
script = soup.find_all("script", text=pattern, type="text/javascript")
name = soup.select('script')[]
print(name)
我的预期输出是“Apple Inc.”。
如何选择该特定变量来提取其内容?
解决方案
一般来说,BS 并不打算解析 JavaScript。使用纯re
. 在您的特定情况下,您要查找的行是var followObjTitle = "Apple Inc.";
. 请注意,它使用双引号,但您的正则表达式会尝试匹配单引号。最后, remove re.MULTILINE | re.DOTALL
,它们在您的正则表达式中没有任何业务。
pattern = re.compile("var followObjTitle = \"(.*?)\";")
pattern.findall(soup.text)
#['Apple Inc.']
推荐阅读
- python - scipy.optimize.newton - 容差参数 tol 不是指函数的结果,而是指输入的容差?
- flask - Flask-WhooshAlchemy - 如何使用 Flask-WhooshAlchemy 中的现有记录映射数据库
- html - 如何将响应式文本放在图像上?
- django - Windows Apache 上的两个 Django 网站
- python - 在 docker 容器外运行 pytest 命令失败,因为容器已停止
- python - 类型错误:('关键字参数不理解:','pool1')尝试使用自定义层加载模型时
- pandas - 以 Pandas 开头的所有列的转换类型
- browser - caniuse-lite 已过时不会在更新浏览器列表后消失
- .net - 在 .NET 4.71 项目中发布 Angular 应用程序
- java - 如何解决 android Admob 中的无广告配置问题?