如何有效地网络抓取这些异常值?

时间:2015-02-28 00:05:32

标签: python python-2.7 web-scraping beautifulsoup

所以我正在尝试网页抓取此页面上的项目:

https://zkillboard.com/kill/44887120/overview/

其中一些相当容易,就像我想要丢弃的ISK数量一样,我只会使用:

dropped = soup.find("td", class_="item_dropped").get_text()

会导致:13,270,929,632.15 ISK

但是,我想要抓住其他一些值,但它们更棘手。 假设我想抓住受害者的名字,在这种情况下它是DwarfMaster 如果我查看网站的源代码,请列在:<a href="/character/1248683700/">

问题在于这些页面的受害者并不总是1248683700而且不仅如此,页面上还有其他/字符/数字代表我不想刮的不同字符,尽管他们都处于相同的位置。有没有比仅仅抓取每个<a>代码并调用第X个位置/character/信息然后使用该字符搜索代码更好的方法?听起来真的很草率。然后在页面上还有另一个棘手的问题,如果你在45 Involved下方的右侧看,你可以看到玩家的船名,例如Silent Ivy的船只是{{1但我能找到该值的唯一方法是图像链接的内部,没有实际文本。在这种情况下:Nyx如何抓取<img class="eveimage img-rounded" width="32" height="32" **alt="Nyx"** src="website.png"></img>值?

1 个答案:

答案 0 :(得分:1)

您是否认为所有这些页面都修复了您要查找的标记的位置?

E.g。那个&#34;受害者的名字&#34;始终可以在第一个表中第一个表的第一个表行的第一个锚点下访问:

name = soup.table.table.tr.a.get('title')

至于获取该船的名称,请访问该alt标记的img属性:

import re
shipname = soup.find_all('tr', class_="attacker")[0].find_all('a', href=re.compile('/ship/'))[0].img.get('alt')

我使用了一些绕道来访问该元素,但这应该让您了解如何访问这些属性。

相关问题