Python 如何使用py3上的bs4从网页上的表中的隐藏行下载数据
我想知道如何从隐藏行中包含的第一个表下载数据,并通过以下链接将其保存到数组中: 要查看它们,我必须按您在图像中看到的按钮“显示更多匹配项”。Python 如何使用py3上的bs4从网页上的表中的隐藏行下载数据,python,python-3.x,beautifulsoup,Python,Python 3.x,Beautifulsoup,我想知道如何从隐藏行中包含的第一个表下载数据,并通过以下链接将其保存到数组中: 要查看它们,我必须按您在图像中看到的按钮“显示更多匹配项”。 重要的是,代码下载第一个匹配表中的每个数字/名称,甚至是问题焦点所在的隐藏行中的元素。 当您按下该按钮时,表中会显示与该玩家最老游戏相关的其他行。 我使用了您在下面看到的代码,并且只能下载您看到的信息,而不能下载按下按钮后获得的信息 for record in link.findAll('a', class_ = 'leagueTable__team')
重要的是,代码下载第一个匹配表中的每个数字/名称,甚至是问题焦点所在的隐藏行中的元素。 当您按下该按钮时,表中会显示与该玩家最老游戏相关的其他行。
我使用了您在下面看到的代码,并且只能下载您看到的信息,而不能下载按下按钮后获得的信息
for record in link.findAll('a', class_ = 'leagueTable__team'):
linkplayer = record.get('href')
destlink.append(linkplayer)
for i in range(len(destlink)):
link_step1 = "https://www.diretta.it"+ destlink[i]+"/rosa/"
link_team.append(link_step1)
link_soap1=make_soup(link_step1)
for record in link_soap1.findAll('div', class_='tableTeam__squadName--playerName'):
for record1 in record.findAll("a"):
linkplayer = record1.get('href')
link_step2=diretta+linkplayer
players.append(linkplayer)
link_step2_list.append(link_step2)
for i in range(len(link_step2_list)):
link_soap2 = make_soup(link_step2_list[i])
for record in link_soap2.findAll('div', class_='playerTable__date'):
date = record.get_text()
print(date)
HTML:
莫斯特拉·皮因科特里
$this=$('.profileTable_uu行--leagueHeading')
$this.hide();
$(文档).ready(函数(){
$this.eq(0.show();
var actualElement=$this.eq(0.attr)(“数据状态”);
对于(变量i=1;i<$this.length;i++){
if($this.eq(i).attr('data-state')!=actualElement){
$this.eq(i.show();
actualElement=$this.eq(i).attr('data-state');
}
}
})
我不知道bs4的情况,但是 在单击“显示更多”链接之前,“隐藏”数据实际上不在页面中。因此,您需要使用类似硒的东西来:
import unittest
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.diretta.it/giocatore/dybala-paulo/W4myUVXR/')
for link in driver.find_elements_by_tag_name('a'):
if "Mostra" in link.text:
link.click()
你也需要在你的盒子上安装chrome驱动程序
数据是通过一个新请求获得的,并以json的形式获得结果。一种可能是让脚本执行该请求并解析json对象。对于我来说,我必须使用python中的代码执行您在div类中看到的脚本。换句话说,我必须使用python中的代码按下该按钮。但它永远不会起作用,硒会帮你的。selenium打开页面后。搜索链接并调用链接上的
click()
。@TommasoFaedo,查看我答案的更新。它向您展示了如何使用selenium来做您想做的事情。
import unittest
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.diretta.it/giocatore/dybala-paulo/W4myUVXR/')
for link in driver.find_elements_by_tag_name('a'):
if "Mostra" in link.text:
link.click()