【发布时间】:2021-09-07 07:45:29
【问题描述】:
源页面 = http://bgpstream.com/
要解析的部分:
<tr>
<td class="event_type">Possible Hijack</td>
<td class="country">
</td>
<td class="asn">
<i>Expected Origin AS:</i> TENETA, UA (AS 47725)<br>
<i>Detected Origin AS:</i> LANFIBRA TELECOMUNICACOES - EIRELI, BR (AS 269684)
</td>
<td class="starttime"> 2021-02-28 15:13:14 </td>
<td class="endtime">
</td>
<td class="moredetail"> <a href="/event/268928">More detail</a></td>
</tr>
尝试这样的事情:
evts = soup.find_all('td', class_='event_type')
for evt in evts:
if('Hijack' in evt.text):
asns = evt.find_all('asn')
for a in asns:
print(a)
但是,我无法获得所需的输出。
我想以任何格式 csv、空格分隔或行并匹配特定 ASN 获取所有“劫持”元素。
例如,使用 AS ####(上述格式 AS 47725)找到任何劫持:
Expected Origin AS: TENETA, UA (AS 47725)
Detected Origin AS: LANFIBRA TELECOMUNICACOES - EIRELI, BR (AS 269684)
2021-02-28 15:13:14
^最后一个元素是开始时间
我的想法是获取所有包含 Hijack 文本的 td,然后获取子元素,其中 asn 包含我正在寻找的 AS #####(python 参数输入),然后它将返回三个子元素(子元素)循环中当前元素中的那个。但是,我似乎无法从 hijack evts 集合中获取子元素。对迭代集合有任何帮助吗?
【问题讨论】:
标签: python parsing web-scraping beautifulsoup