【问题标题】:Copy a table from a website using selenium and flask使用 selenium 和烧瓶从网站复制表格
【发布时间】:2016-12-04 11:44:23
【问题描述】:
对于我当地的体育俱乐部网站,最好从官方联赛网站复制和同步排名和结果。我正在为 python 3.5 使用烧瓶和硒。
到目前为止,我正在使用
driver.find_element_by_class_name("table")
定位表格。有没有一种有效的方法来存储它并一次将它传递给 jinja 模板?还是我必须分别存储和处理表的所有不同部分(标题、行、元素)?
【问题讨论】:
标签:
python
selenium
flask
jinja2
【解决方案1】:
由于您在 <table> 中拥有信息,您应该只根据 <tr>、<td>(可能还有 <th>)提取信息并将其存储在 CSV 或其他结构化文件(YAML、JSON ) 并从那里获取 jinja 模板的数据。
如果您仅在数据更改时更新文件,这是更有效的方法之一,您可以检查例如如果输入(官方排名表)发生变化,则每小时一次。
当联赛数据更改为使用时,这种解耦也很重要,例如<div> 和 <span> 并且您的输入处理需要进行调整。
@Will 建议使用 BeautifulSoup 是一个很好的建议,特别是如果要处理的数据很大,从 selenium 中一次性检索 HTML 并由 BeautifulSoup 处理要快得多。如果您不愿意花时间研究使用完整的 CSS(不仅仅是类)来选择 selenium(使用 .find_element_by_css_selector())中最容易转换为 BeautifulSoup(使用 .select())的元素,一旦你将进行过渡。