Java 使用JSoup进行屏幕刮除
我想通过网站抓取从此网站获取数据: 我以前在更多静态HTML站点上使用过JSoup,但这一个更难,因为在获取站点上的HTML表之前,我必须单击一个按钮,我不知道是否可以使用JSoup来操作按钮 点击这个按钮后,我得到一个HTML表格,我只想在模态不存在的地方得到数据 感谢您提供使用Firefox的提示,现在我有了另一个页面信息表。你能告诉我怎样才能只获取表格信息吗?我得到的输出如下:Java 使用JSoup进行屏幕刮除,java,web-scraping,jsoup,Java,Web Scraping,Jsoup,我想通过网站抓取从此网站获取数据: 我以前在更多静态HTML站点上使用过JSoup,但这一个更难,因为在获取站点上的HTML表之前,我必须单击一个按钮,我不知道是否可以使用JSoup来操作按钮 点击这个按钮后,我得到一个HTML表格,我只想在模态不存在的地方得到数据 感谢您提供使用Firefox的提示,现在我有了另一个页面信息表。你能告诉我怎样才能只获取表格信息吗?我得到的输出如下: < P> > P>浏览器的java模拟器可能会对你的问题有用——请考虑这一个HTMLUng. 它为HTML文
< P> > P>浏览器的java模拟器可能会对你的问题有用——请考虑这一个HTMLUng. 它为HTML文档建模,并提供一个允许您调用 页面、填写表格、单击链接等。。。就像你在家里一样 “普通”浏览器
为此,您必须使用
Selenium
HTML单元驱动程序
下面是完整的工作示例
。它将访问网站
,单击按钮
,然后您可以从页面中获取数据
编辑:仅获取表格值
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
public class GetData {
public static void main(String args[]) throws InterruptedException {
WebDriver driver = new FirefoxDriver();
driver.get("http://myservices.ect.nl/tracing/objectstatus/Pages/Overview.aspx");
Thread.sleep(5000);
// select barge
new Select(driver.findElement(By.id("ctl00_ctl15_g_ce17bd4b_3803_47f6_822a_2b8dd10fc67d_ctl00_dlModality"))).selectByVisibleText("Barge");
// click button
Thread.sleep(3000);
driver.findElement(By.className("button80")).click();
Thread.sleep(5000);
//get only table text
WebElement findElement = driver.findElement(By.className("grid-view"));
String htmlTableText = findElement.getText();
// do whatever you want now, These are raw table values.
System.out.println(htmlTableText);
driver.close();
driver.quit();
}
}
每次“点击”(或任何此类交互)都是对服务器的请求和对浏览器的响应。因此,一个可能的解决方案不是对初始页面使用JSoup,而是对结果页面使用JSoup。例如,打开返回表格页面的帖子,传递负责返回模态的参数
Barge
。您可以使用Firebug(用于Firefox)或Chrome Developer Tools等工具来检查对话内容(请求/响应),这样您就可以用自己的代码模拟对话内容 谢谢你的代码和你的回复,我真的很感激,但是我没有用这段代码得到表,我得到的是没有表的页面源代码,因为我想得到的是只有html表,只有修改的地方,谢谢。试着用FirefoxDriver代替HtmlUnitDriver,看看效果如何。谢谢,现在我有了使用FirefoxDriver的html表格,但是你能告诉我怎么才能得到唯一的表格而不是所有的页面源代码吗?我放了一张图来说明我的意思,如果你能用某种方式告诉我,我会很高兴的。谢谢亲爱的Makky,你能帮我解决一些问题吗?请,上面的代码给我表格“网格视图”作为字符串,是否可以获得表格html格式或类似的格式,或者是否可以将Selenuim与soup元素table1=doc混合。选择(“网格视图”)。first();谢谢?