我正在尝试提取这只股票的名称。
从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。”。
如何选择该特定变量以提取其内容?
答案 0 :(得分:0)
通常,BS并非旨在解析JavaScript。使用普通的re
。在您的特定情况下,您要查找的行是var followObjTitle = "Apple Inc.";
。请注意,它使用双引号,但是您的正则表达式会尝试匹配单引号。最后,删除re.MULTILINE | re.DOTALL
,它们与您的正则表达式无关。
pattern = re.compile("var followObjTitle = \"(.*?)\";")
pattern.findall(soup.text)
#['Apple Inc.']