这个问题实际上是在这里中继续进行的,我在链接之后得到了社区关于在selenium中使用脚本的帮助,但这里的主要部分是,我想收集至少2-3条新闻,并存储在一些json中,这可以进一步操作。我不能点击那些新闻部分,这是在页面的底部,任何方式,我可以刮那些新闻,至少1-2新?
stocks_data=["AKPL","NICA"]
for stock_data in stocks_data:
self.driver.get(f'https://merolagani.com/CompanyDetail.aspx?symbol={stock_data[0].lower()}')
self.driver.execute_script(
"document.getElementById('ctl00_ContentPlaceHolder1_CompanyDetail1_lnkNewsTab').click()")发布于 2022-06-27 15:43:30
使用stocks_data=["AKPL","NICA"]而不是stocks_data="AKPL","NICA"]
发布于 2022-06-27 15:59:31
对于多个新闻,只要在document.querySelectorAll('[id*="_lnkNewsTab"]')上使用一个循环,或者使用一些类似的选择器,如果这个选择器太宽。
至于json,尝试用您需要的元素(document.getElementById('my_json').innerHTML += document.getElementById('the id of the element you want the data from').innerHTML;)的内容填充一些虚构的div (您可以通过document.body.innerHTML += '<div id="my_json"></div>'在Javascript中创建),最后从python获得div (参见如何在Python中使用Selenium WebDriver获取文本)。
然后,您可以在python中任意操作。
类似于:
stocks_data=["AKPL","NICA"]
for stock_data in stocks_data:
self.driver.get(f'https://merolagani.com/CompanyDetail.aspx?symbol={stock_data[0].lower()}')
self.driver.execute_script("document.getElementById('ctl00_ContentPlaceHolder1_CompanyDetail1_lnkNewsTab').click()")
self.driver.execute_script("""
document.body.innerHTML += '<div id="my_json"></div>';
var x = document.querySelectorAll('[id*="_lnkNewsTab"]');
for (let i = x.length - 1; i >= 0; --i) {
document.getElementById('my_json').innerHTML += x[i].innerHTML + '--DELIMITER--'
});
""")
content = self.driver.find_element_by_id("my_json")
content = content.text.split('--DELIMITER--')[:-1]https://stackoverflow.com/questions/72774792
复制相似问题