我如何有效地通过网络抓取这些异常值?
How do I efficiently web-scrape these abnormal values?
所以我正在尝试通过网络抓取此页面上的项目:
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
而且不仅如此,页面上还有其他 /characters/numbers 代表不同的字符我不想刮,虽然他们都在同一个位置。有没有比抓取每个 <a>
标签并调用第 X 个位置 /character/
信息然后搜索具有该字符的标签更好的方法?听起来真的很马虎。然后页面上还有另一个棘手的刮擦,如果你在 45 Involved
下的右侧看,你可以看到玩家的船名,例如 Silent Ivy
的船是 Nyx
但我能找到该值的唯一方法是图像 link 的 内部 ,没有实际文本。在这种情况下:<img class="eveimage img-rounded" width="32" height="32" **alt="Nyx"** src="website.png"></img>
我怎样才能抓取 alt="Nyx"
值?
您是否考虑过您要查找的标签的位置在所有这些页面上都是固定的?
例如在第一个 table:
中第一个 table 的第一个 table 行的第一个锚点下始终可以访问 "name of the victim"
name = soup.table.table.tr.a.get('title')
至于获取那艘船的名称,请访问 img
标签的 alt
属性:
import re
shipname = soup.find_all('tr', class_="attacker")[0].find_all('a', href=re.compile('/ship/'))[0].img.get('alt')
我绕了一些弯路来访问该元素,但这应该让您了解如何访问这些属性。
所以我正在尝试通过网络抓取此页面上的项目:
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
而且不仅如此,页面上还有其他 /characters/numbers 代表不同的字符我不想刮,虽然他们都在同一个位置。有没有比抓取每个 <a>
标签并调用第 X 个位置 /character/
信息然后搜索具有该字符的标签更好的方法?听起来真的很马虎。然后页面上还有另一个棘手的刮擦,如果你在 45 Involved
下的右侧看,你可以看到玩家的船名,例如 Silent Ivy
的船是 Nyx
但我能找到该值的唯一方法是图像 link 的 内部 ,没有实际文本。在这种情况下:<img class="eveimage img-rounded" width="32" height="32" **alt="Nyx"** src="website.png"></img>
我怎样才能抓取 alt="Nyx"
值?
您是否考虑过您要查找的标签的位置在所有这些页面上都是固定的?
例如在第一个 table:
中第一个 table 的第一个 table 行的第一个锚点下始终可以访问 "name of the victim"name = soup.table.table.tr.a.get('title')
至于获取那艘船的名称,请访问 img
标签的 alt
属性:
import re
shipname = soup.find_all('tr', class_="attacker")[0].find_all('a', href=re.compile('/ship/'))[0].img.get('alt')
我绕了一些弯路来访问该元素,但这应该让您了解如何访问这些属性。