我正在尝试从以下网站获取生成的短语作为字符串。https://randomwordgenerator.com/phrase.php我浏览了html,我相信我已经确定了该短语在html结构中的位置。
这是附近的html。
<div id="loading_result" class="small-img-results">
<ol id="result">
<li> == $0
<div>
<span class="support-phrase">Generated Phrase </span>
<span class="subtle">...</span>
</div>
</li>
</ol>
</div>
在这种情况下,我需要文本“ Generated Phrase”
这是我目前正在做的
pageLink = "https://randomwordgenerator.com/phrase.php"
pageResponse = requests.get(pageLink, timeout=5)
pageContent = BeautifulSoup(pageResponse.content, "html.parser")
span = pageContent.find_all("span", {"class": "support-phrase"})
问题是此运行之后的span值为空列表。我刚接触过漂亮的汤,所以这可能是一个非常简单的问题,但是我还没有发现任何特别清晰的解决方案。
提前致谢!
编辑:我现在想知道问题是否是我要查找的特定跨度嵌套在体内的一系列div中。
您将需要硒来获取页面上显示的准确值。原因是,虽然总短语(134)是从xhr(https://randomwordgenerator.com/json/phrases.json)返回的数组中返回的;randomiseUniqueNumbers
从该数组中选择的实际索引/索引(例如函数),数组中各项的顺序(例如Array.prototype.shuffle = function()
)以及处理我认为可能发生的冲突的规则(例如function getResults
)均在js文件中定义https://randomwordgenerator.com/assets/js-compress/f0351bd03da6dab13a24355fa7deeabd.js?v=1577899960:formatted
。其中的前两个至少在数组大小的边界之间使用随机数生成。没有种子,尽管我认为您可以编写自己的版本,但不能保证获得与页面上相同的结果-实际上,您更有可能获得不同的词组。
硒的轮廓
from selenium import webdriver
d = webdriver.Chrome()
d.get('https://randomwordgenerator.com/phrase.php')
print([i.text for i in d.find_elements_by_css_selector('.support-phrase')])
对于一个短语,只需使用
d.find_element_by_css_selector('.support-phrase').text
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句