【发布时间】:2020-09-02 06:05:43
【问题描述】:
我正在尝试从该网站https://www.ebi.ac.uk/gwas/genes/SAMD12 上抓取“Traits”表(实际上,URL 可以根据我的需要更改,但结构将是相同的)。
问题是我在网络抓取方面的知识非常有限,而且我无法使用我在这里看到的基本 BeautifulSoup 工作流程来获取此表。
这是我的代码:
import requests
from bs4 import BeautifulSoup
url = 'https://www.ebi.ac.uk/gwas/genes/SAMD12'
page = requests.get(url)
我正在寻找“efotrait-table”:
efotrait = soup.find('div', id='efotrait-table-loading')
print(efotrait.prettify())
<div class="row" id="efotrait-table-loading" style="margin-top:20px">
<div class="panel panel-default" id="efotrait_panel">
<div class="panel-heading background-color-primary-accent">
<h3 class="panel-title">
<span class="efotrait_label">
Traits
</span>
<span class="efotrait_count badge available-data-btn-badge">
</span>
</h3>
<span class="pull-right">
<span class="clickable" onclick="toggleSidebar('#efotrait_panel span.clickable')" style="margin-left:25px">
<span class="glyphicon glyphicon-chevron-up">
</span>
</span>
</span>
</div>
<div class="panel-body">
<table class="table table-striped borderless" data-export-types="['csv']" data-filter-control="true" data-flat="true" data-icons="icons" data-search="true" data-show-columns="true" data-show-export="true" data-show-multi-sort="false" data-sort-name="numberAssociations" data-sort-order="desc" id="efotrait-table">
</table>
</div>
</div>
</div>
具体来说,这个:
soup.select('table#efotrait-table')[0]
<table class="table table-striped borderless" data-export-types="['csv']" data-filter-control="true" data-flat="true" data-icons="icons" data-search="true" data-show-columns="true" data-show-export="true" data-show-multi-sort="false" data-sort-name="numberAssociations" data-sort-order="desc" id="efotrait-table">
</table>
如您所见,表格的内容没有显示出来。在网站上,有一个将表格保存为 csv 的选项。如果我能以某种方式获得这个可下载的链接,那就太棒了。但是当我单击链接以复制它时,我得到的是“javascript:void(0)”。我没学过javascript吧?
表格是隐藏的,即使不是,我也需要在每页以交互方式选择更多行来获取整个表格(并且 URL 不会改变,所以我也无法获取表格)。
我想知道一种以编程方式访问此表的方法(非结构化信息),那么有关组织表的未成年人就可以了。任何有关如何做到这一点(或我应该研究什么)的线索将不胜感激。
提前致谢
【问题讨论】:
-
为什么不试试 selenium 呢?
-
@jaibalaji,我一定会试试这个!您认为没有 API,这是唯一的选择吗?或者至少是必去之地?
标签: python web-scraping beautifulsoup