【发布时间】:2020-11-25 18:12:55
【问题描述】:
我正在尝试从网页中获取一些数据 https://www.thpa.gr/index.php/en/services-3/search-ek
这基本上是您放置容器的编号(例如 OOLU0198315)并在容器卸载时返回以及一些其他信息。 我的问题是,据我所知,这是在 iframe(或 javascript)中制作的,它不包含网页中的数据作为代码。
例如,如果您搜索 OOLU0198315,它会返回以下数据
<tr bgcolor="#fafafa">
<td style="padding:7px">OOLU0198315</td>
<td style="padding:7px">781442-1</td>
<td style="padding:7px">ΦΟΡΤΩΣΗ</td>
<td style="padding:7px">Nov 24 2020 11:04:26:217AM</td>
<td style="padding:7px">Δεν εκδόθηκε τιμολόγιο</td></tr>
其中不包含任何id或类来获取基于Xpath或基于id的数据。
我尝试根据上一个问题获取这些数据 How can I scrape a table that is created with JavaScript in c#
但我无法遵循相同的解决方案。我尝试使用 Selenium 和 HtmlAgilityPack,但没有 Xpath 来获取数据。 有没有其他方法可以获取这些信息?
到目前为止,我使用 HtmlAgilityPack 编写的代码
WebClient webClient = new WebClient();
string page = webClient.DownloadString("https://www.thpa.gr/index.php/en/services-3/search-ek");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);
List<List<string>> table = doc.DocumentNode.SelectSingleNode("/html/body/div/table/tbody/tr[2]")
.Descendants("tr")
.Skip(1)
.Where(tr => tr.Elements("td").Count() > 1)
.Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
.ToList();
还有硒
using (var driver = new ChromeDriver())
{
driver.Navigate().GoToUrl("https://www.thpa.gr/index.php/en/services-3/search-ek");
var containerInfo = driver.FindElementById("I dont have Id");
}
【问题讨论】:
-
你为什么不直接调用使用 iframe 源 url 是 portal.thpa.gr/fnet5/track/index.php
-
@coder_b 这与初始页面有何不同? index.php中的数据格式与thpa.gr/index.php/en/services-3/search-ek相同
标签: c# selenium web-scraping html-agility-pack