![](/img/trans.png)
[英]Parsing URL's from JavaScript driven page with Beautifulsoup and Selenium
[英]Parsing JavaScript Output Using Selenium and Beautifulsoup
使用 Selenium 提取了 JavaScript 数据,可以看到我需要的数据(“meeting_summary_reference”)包含在字典类型“结构”中。 Python json 不解析此类数据,test2_text 和 test33 均为空白。 所以标签不会转换为文本。 漂亮的汤串也不适合我。 不精通复杂的正则表达式。 不知道接下来要尝试什么。
from urllib.parse import urlparse
from bs4 import BeautifulSoup
import requests
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome(executable_path='C:/A38/chromedriver_win32/chromedriver.exe')
driver.implicitly_wait(30)
driver.maximize_window()
# Navigate to the application home page
driver.get("https://www.sportinglife.com/racing/results/2020-11-23")
innerHTML = driver.execute_script("return document.body.innerHTML")
print("\nJS PAGE SOURCE:", "\n", driver.page_source)
j_str = driver.page_source
html = j_str
bsObj = BeautifulSoup(html, "html.parser")
print("\nBSOBJ:", "\n", bsObj.prettify())
test2 = bsObj.find('script', attrs={'id': '__NEXT_DATA__'})
print("\nTEST2: \n", test2)
print("\nTYPE TEST2: \n", type(test2))
print("\nLENGTH TEST2: \n", len(test2))
test2_text = bsObj.find('script', attrs={'id': '__NEXT_DATA__'}).getText()
print("\nTEST2_TEXT: \n",test2_text)
test33 = test2.find(text = "meeting_summary_reference")
print("\nTEST33: \n", test33)
我不确定您是否可以使用beautifulsoup
提取该信息,但您可以使用此正则表达式:
import re
...
test2_text = bsObj.find('script', attrs={'id': '__NEXT_DATA__'}) # I edited this line also
pattern = r'\"meeting_summary_reference\":\{(.*?)(\{.*\})?\},'
test33 = re.findall(pattern, str(test2_text), re.M)
它将找到所有名为meeting_summary_reference
的嵌套对象,然后您可以将其转换为 python 字典并提取所需信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.