c# - 抓取 JavaScript 动态生成的数据
问题描述
我尝试使用 PhantomJSDriver 抓取此 URL:http ://www.tsetmc.com/loader.aspx?ParTree=151311&i=67126881188552864
1) 首先,在这个 URL 中,我们必须点击上方的蓝色链接,名称为:سابقه
2)然后我想废弃这个 XPath://*[@id="trade"]/div[2]/table/tbody/tr[9]/td[7]
这是我的代码,但此代码找不到所需的 XPath:
var driverService = PhantomJSDriverService.CreateDefaultService();
var driver = new PhantomJSDriver(driverService);
driver.Url = "http://www.tsetmc.com/loader.aspxParTree=151311&i=67126881188552864";
driver.Navigate();
var source = driver.PageSource;
driver.FindElementByXPath("//*[@id=\"tabs\"]/div/ul/li[3]/a").Click();
Thread.Sleep(5000);
try
{
var pathElement = driver.FindElementByXPath("//[@id=\"trade\"]/div[2]/table/tbody/tr[9]/td[7]");
MessageBox.Show(pathElement.Text);
}
catch
{
driver.Dispose();
this.Close();
}
driver.Dispose();
解决方案
我建议直接点击这个网址:
http://members.tsetmc.com/tsev2/data/InstTradeHistory.aspx?i=67126881188552864&Top=999999&A=0
然后解析这些值,因为它基本上包含所有 209 页上的所有值,因此它还可以为您省去从第 1 页 -209 移动的麻烦。
它看起来很容易被 ; 给你所有的行,然后用@分割给你每列的值。
推荐阅读
- c# - Entity Framework Core - 构建迁移并得到不清楚的错误,说我添加了两次属性
- sublimetext3 - SublimeText3:如何禁用表现为 increase_font_size 的鼠标手势?
- python - Django 表单无效,必填字段,即使通过输入给出
- angular - NativeScript - Karma 单元测试未按承诺运行
- javascript - 如何更改具有验证错误的选项卡的选项卡指示器颜色?
- python - 如何在 Python 中的多个 Dataframe 之间计算和重新分配数值?
- firebase - 使用 Firebase 托管功能时遇到一些问题
- google-cloud-platform - 这是在 BigQuery 中实现分页的好方法吗?
- sql - 如何发送从数据库中检索电子邮件模板并将变量插入模板的 PHPMailer
- javascript - 如何调整 MUI Tooltip 字体大小?