如何使用BeautifulSoup通过切换选项卡搜索隐藏的元素?

2024-05-26 19:55:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个url中提取和打印所有td标签的文本内容,该url拥有多个选项卡,这些选项卡显示页面的某些元素,并在单击(https://www.encodeproject.org/experiments/ENCSR000EEC/)时隐藏所有其他选项卡的内容。具体地说,我试图从“文件细节”选项卡中提取所有的TD标签(在页面中间看到的标签的完整列表)是:“基因组浏览器”、“关联图”和“文件细节”。目前,我能提取的唯一td标签来自div上方的一个部分,其中的标签也包含td标签。唯一包含td标签的选项卡是“文件详细信息”。如何访问“文件详细信息”选项卡中的隐藏内容?当前代码:

def test_select_files(url):
    texts = []
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    td_tags = soup.findAll('td')
    for tag in td_tags: 
        print(tag.text.strip())

test_select_files('https://www.encodeproject.org/experiments/ENCSR000EEC/')

所需输出(直接从url):

bed narrowPeak  
bigBed narrowPeak   
bigWig  
bed idr_ranked_peak 
bed narrowPeak  
...

Tags: 文件httpsorgurl内容www页面标签
1条回答
网友
1楼 · 发布于 2024-05-26 19:55:04

您应该能够从HTML中返回的JSON中获得所需的所有信息:

from bs4 import BeautifulSoup
import requests
import json

r = requests.get('https://www.encodeproject.org/experiments/ENCSR000EEC/')
soup = BeautifulSoup(r.content, 'html.parser')
json_data = soup.find('script', type='application/json').string
data = json.loads(json_data)    

for file in data['files']:
    print(f"{file['accession']}  {file['file_format']:10}  {file['output_type']}")

这将使您的输出开始:

ENCFF000XTK  bam         alignments
ENCFF000XTL  bam         alignments
ENCFF000XTM  bigBed      peaks
ENCFF000XTP  bigWig      signal
ENCFF000XTZ  fastq       reads
ENCFF000XUA  fastq       reads
ENCFF001VKJ  bed         peaks
ENCFF002CUG  bed         optimal IDR thresholded peaks
ENCFF715UNN  bigBed      optimal IDR thresholded peaks
ENCFF836BQL  bam         unfiltered alignments

我建议您print(data)了解每个文件还有哪些其他可用信息

相关问题 更多 >

    热门问题