【发布时间】:2022-01-11 06:55:24
【问题描述】:
我正在重新审视网络抓取,以尝试开发一种可以从数据库中提取数据的工具。
我在这里使用的物质档案位于:https://echa.europa.eu/registration-dossier/-/registered-dossier/16016/7/1。
这里列出了可以在此档案中找到的各种毒理学信息,但我只对此处称为 DNEL 的出发点值 (POD) 感兴趣:
基本上复制一个答案给我提供了一段时间,我有以下代码来提取第一个 POD。
Public Sub GetContents()
'Start ECHA Search via XML HTTP Request
Dim XMLReq As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument
XMLReq.Open "Get", "https://echa.europa.eu/registration-dossier/-/registered-dossier/16016/7/1", False
XMLReq.send
If XMLReq.Status <> 200 Then
MsgBox "Problem" & vbNewLine & XMLReq.Status & " - " & XMLReq.statusText
Exit Sub
End If
HTMLDoc.body.innerHTML = XMLReq.responseText
'Retrieve Data
'POD Population and Route
Set Info = HTMLDoc.getElementById("sWorkersHazardViaInhalationRoute")
Debug.Print Info.innerText
'POD Type
Set Info = HTMLDoc.getElementsByClassName("HorDL")(0)
Set data = Info.getElementsByTagName("dd")(0)
Debug.Print data.innerText
'POD Value
Set data = Info.getElementsByTagName("dd")(1)
Debug.Print data.innerText
End Sub
这可以为第一个管理途径拉取 POD:WorkersHazardViaDermalRoute
Workers - Hazard via inhalation route
DNEL (Derived No Effect Level)
238 mg/m³
这很好,但我真的希望能够对其进行调整,以提取 DNEL 及其对每种给药途径的价值。此处以蓝色突出显示:
因此,对于这个示例,整个所需的输出将跨越 3 列(虽然只是想提取数据,但它现在在 3 列中并不重要):
Workers - Hazard via inhalation route, DNEL (Derived No Effect Level), 238 mg/m³
Workers - Hazard via dermal route, DNEL (Derived No Effect Level), 84 mg/kg bw/day
General Population - Hazard via inhalation route, DNEL (Derived No Effect Level), 70 mg/m³
General Population - Hazard via dermal route, DNEL (Derived No Effect Level), 51 mg/kg bw/day
General Population - Hazard via oral route, DNEL (Derived No Effect Level), 24 mg/kg bw/day
我遇到的问题是我正在使用类元素“HorDL”来获取此信息,但不幸的是,该类不仅限于每条路线以蓝色突出显示的部分。所以 ("HorDL")(0) 可以找到,但是 ("HorDL")(1) 会立即在下面提取相同路线的信息。
出于这个原因,我怀疑使用这个类元素来提取信息并不是最好的方法,但是我想不出任何其他方法来做到这一点。
我已经有办法提取相关的档案,所以如果这可行,它将成为一个只提取相关信息的 Neat 工具。我考虑过提取所有信息,然后在 excel 中应用过滤器,但我认为这不是一个特别优雅的解决方案。
非常感谢任何回复。
【问题讨论】:
-
所有 DNEL 是否与其他档案一致,或者最好从毒理学摘要中确定所有可用的 DNEL(不包括
Additional Information和Hazard for the eyes的那些)? -
@Raymond Wu 最好从可用的内容中确定。
-
在下面试试我的答案,看看它是否适合你。
标签: excel vba web-scraping