繁体   English   中英

Python + Selenium Web 抓取动态元素

[英]Python + Selenium Web scraping dynamic elements

我正在尝试从 SEC 档案网站中提取以下信息。

1) 大型加速申报 2) 加速申报 3) 非加速申报 4) 小型报告公司 5) 新兴成长型公司

这是它在网站上的显示方式:

Large accelerated filer     ☒       
Accelerated filer           ☐
Non-accelerated filer       ☐  (Do not check if a smaller reporting company)         
Smaller reporting company   ☐
Emerging growth company     ☐

在某些情况下,可能不存在一项或多项。 我想编写一个通用代码,可以为许多公司提取这些值。 现在我面临的问题是 HTML 的结构因公司而异。 到目前为止,我遇到了 3 种不同的结构(请参阅下面的 HTML 结构)。 我如何编写代码以在不同的结构中进行泛化?

<td valign="bottom">Large&nbsp;accelerated&nbsp;filer</td>
<td valign="bottom">&nbsp;</td>
<td valign="bottom">☒</td>
<td valign="bottom">&nbsp;&nbsp;</td>
<td valign="bottom">Accelerated&nbsp;filer</td>
<td valign="bottom">&nbsp;</td>
<td valign="bottom">☐</td></tr>
<tr style="page-break-inside:avoid ; font-family:Times New Roman; font-size:10pt">
<td valign="bottom"><font style="white-space:nowrap">Non-accelerated&nbsp;filer</font></td>
<td valign="bottom">&nbsp;</td>
<td valign="bottom">☐&nbsp;&nbsp;(Do not check if a smaller reporting company)</td>
<td valign="bottom">&nbsp;&nbsp;</td>
<td valign="bottom">Smaller&nbsp;reporting&nbsp;company</td>
<td valign="bottom">&nbsp;</td>
<td valign="bottom">☐</td></tr>
<tr style="page-break-inside:avoid ; font-family:Times New Roman; font-size:10pt">
<td valign="bottom">Emerging&nbsp;growth&nbsp;company</td>
<td valign="bottom">&nbsp;</td>
<td valign="bottom">☐</td>
<td valign="bottom">&nbsp;&nbsp;</td>
<td valign="bottom"></td>
<td valign="bottom">&nbsp;</td>
<td valign="bottom"></td></tr>

另一种结构:

filer&nbsp;&nbsp;<font style="FONT-FAMILY:WINGDINGS">x</font>&nbsp;&nbsp;&nbsp;&nbsp;Accelerated filer&nbsp;&nbsp;<font style="FONT-FAMILY:WINGDINGS">¨</font>&nbsp;&nbsp;&nbsp;&nbsp;Non-accelerated filer&nbsp;&nbsp;<font style="FONT-FAMILY:WINGDINGS">¨</font>&nbsp;&nbsp;&nbsp;&nbsp;Smaller reporting company&nbsp;&nbsp;<font style="FONT-FAMILY:WINGDINGS">¨</font> </font>

另一个 :

<tbody><tr>
<td width="63%"></td>
<td valign="bottom" width="2%"></td>
<td width="35%"></td></tr>
<tr>
<td valign="top"> <p style="text-indent:2.00em"><font face="Times New Roman" size="2">Large accelerated filer&nbsp;&nbsp;<font face="WINGDINGS">¨</font></font></p></td>
<td valign="bottom"><font size="1">&nbsp;&nbsp;</font></td>
<td valign="bottom"><font face="Times New Roman" size="2">Accelerated filer&nbsp;&nbsp;<font face="WINGDINGS">þ</font></font></td></tr>
<tr>
<td valign="top"> <p style="text-indent:2.00em"><font face="Times New Roman" size="2">Non-accelerated filer&nbsp;&nbsp;<font face="WINGDINGS">¨</font>&nbsp;&nbsp; (Do not check if a smaller reporting company)</font></p></td>
<td valign="bottom"><font size="1">&nbsp;&nbsp;</font></td>
<td valign="bottom"><font face="Times New Roman" size="2">Smaller reporting Company&nbsp;&nbsp;<font face="WINGDINGS">¨</font></font></td></tr>
</tbody>

您可以尝试使用 3 个 XPath 的这种组合(| 运算符)来获取您需要的内容(已勾选的项目):

//td[.="☒"]/preceding::td[string-length(.)>1][1]/text()|//font[.="x"]/following::text()[1]|//font[.="þ"]/preceding::text()[1]

您提供的 html 格式不正确。 如果它不起作用,请提供其他东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM