gpt4 book ai didi

javascript - 在 python 中使用 selenium,如何从 HTML 中获取在 JS <script> 元素中声明的 Var

转载 作者:行者123 更新时间:2023-12-01 01:08:16 26 4
gpt4 key购买 nike

我想在 htm; 的 JS 中声明 var。但没有 id、元素。我怎样才能得到这些数据?

因为没有地址,只有var name,所以我不知道该怎么做

网站 HTML:

Website HTML picture

<script type="text/javascript">
var imgInfoData = 'data which i want to crawl'

</script>

我的Python代码:

#set url
HOMEPAGE = "https://land.naver.com/info/complexGallery.nhn?newComplex=Y&startImage=Y&rletNo=102235"


#open web
driver = webdriver.Firefox()
driver.wait = WebDriverWait(driver, 2)
driver.get(HOMEPAGE)

#try to get text from html
time.sleep(1)
WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, '//script["var"]'))).text

最佳答案

我检查了您正在抓取的网站,似乎脚本已经包含在 html 页面中,所以我认为您不需要使用 webdriver,您只需使用 requests>美丽的汤

使用请求获取html数据:

res = requests.get(url, headers=headers, params=params)

然后 Soup html 文本以获取脚本标签并查找哪些标签具有 var imgInfoData:

soup = BeautifulSoup(res.text, "html5lib")
scripts = soup.findAll('script', attrs={'type':'text/javascript'})
for script in scripts:
if "var imgInfoData" in script.text: #script with imgInfoData captured
return script.text.replace("var imgInfoData =","").strip()[:-1]

只需删除

var imgInfoData =

;

文本以获取字符串值,或者您可以使用正则表达式获取文本中的 json 字符串。

完整代码:

import requests
from bs4 import BeautifulSoup

def getimgInfoData():
url = "https://land.naver.com/info/complexGallery.nhn"
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
params = {"newComplex":"Y",
"startImage":"Y",
"rletNo":"102235"}
res = requests.get(url, headers=headers, params=params)

soup = BeautifulSoup(res.text, "html5lib")
scripts = soup.findAll('script', attrs={'type':'text/javascript'})
for script in scripts:
if "var imgInfoData" in script.text: #script with imgInfoData captured
return script.text.replace("var imgInfoData =","").strip()[:-1]
return None

print(getimgInfoData())

如果需要,只需将 getimgInfoData() 的结果转换为 json 即可。

关于javascript - 在 python 中使用 selenium,如何从 HTML 中获取在 JS &lt;script&gt; 元素中声明的 Var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55409109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com