BeautifulSoup提取脚本变量数据

时间:2018-09-22 06:55:13

标签: python python-3.x beautifulsoup

我正在尝试提取这只股票的名称。

从var followObjTitle中读取变量。

URL: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。”。

如何选择该特定变量以提取其内容?

1 个答案:

答案 0 :(得分:0)

通常,BS并非旨在解析JavaScript。使用普通的re。在您的特定情况下,您要查找的行是var followObjTitle = "Apple Inc.";。请注意,它使用双引号,但是您的正则表达式会尝试匹配单引号。最后,删除re.MULTILINE | re.DOTALL,它们与您的正则表达式无关。

pattern = re.compile("var followObjTitle = \"(.*?)\";")
pattern.findall(soup.text)
#['Apple Inc.']