Java HTML(twitter)解析

Java HTML(twitter)解析,java,html,parsing,selenium,twitter,Java,Html,Parsing,Selenium,Twitter,我正在解析一个网站,其中的内容通常是一些tweet,因此我只想获取tweet,我检查了网站结构,我想从中获取信息的代码如下所示: <div class="tweet"> <a href="https://twitter.com/Sweden" target="_blank" class="tweet__link">@sweden</a> <span class="tweet__timestamp"><a href="https

我正在解析一个网站,其中的内容通常是一些tweet,因此我只想获取tweet,我检查了网站结构,我想从中获取信息的代码如下所示:

<div class="tweet">
    <a href="https://twitter.com/Sweden" target="_blank" class="tweet__link">@sweden</a>
    <span class="tweet__timestamp"><a href="https://twitter.com/sweden/status/691294898453110784" target="_blank" class="tweet__permalink">Jan. 24, 2016, 5:22 p.m.</a></span>
    <p class="tweet__content">None of them should count when it comes to how you get treated by authorities. <a href="https://t.co/NdSZd3YBTk" rel="nofollow">https://t.co/NdSZd3YBTk</a></p>
</div>

当涉及到当局如何对待你时,它们都不应该算数

我想得到里面的一切 我尝试了以下代码,但没有成功

public static void main(String[]args) throws IOException {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://curatorsofsweden.com/curator/aleksandra-boscanin/");

        By tweetSelector = By.cssSelector("div[class='tweet'] a");

        WebDriverWait wait = new WebDriverWait(driver, 2);
        wait.until(ExpectedConditions.presenceOfElementLocated(tweetSelector));

        List<WebElement> tweetElements = driver.findElements(tweetSelector);
        for (WebElement tweetElement : linkElements) {
            String tweet= tweetElement.getAttribute("p class");

                System.out.println("Tweet" + tweet);


        }
        driver.quit();
        }
publicstaticvoidmain(字符串[]args)引发IOException{
WebDriver=newfirefoxdriver();
驱动程序。获取(“http://curatorsofsweden.com/curator/aleksandra-boscanin/");
By tweetSelector=By.cssSelector(“div[class='tweet']a”);
WebDriverWait wait=新的WebDriverWait(驱动程序,2);
等待。直到(预期条件。元素存在已定位(tweetSelector));
列出tweetElements=driver.findElements(tweetSelector);
for(WebElement tweetElement:linkElements){
String tweet=tweetElement.getAttribute(“p类”);
System.out.println(“Tweet”+Tweet);
}
driver.quit();
}

您的
css选择器和
getAttribute
错误。要通过cssSelector查找子对象,您需要使用.cssSelector(“div[class='tweet']>a”)
,而
getAttribute
不获取标记作为参数,只获取属性“class”、“id”、“href”等

试一试

List tweets=driver.findElements(By.className(“tweet”)//找到所有的标签
for(WebElement tweet:tweets){
List tweetContent=tweet.findElements(By.xpath(“*”);//查找
String href=tweetContent.get(0).getAttribute(“href”);//第一个的get href
String timeStamp=tweetContent.get(1).findElement(按.tagName(“a”))).getText();//获取
String tweet=tweetContent.get(2).findElement(按.tagName(“a”))).getText();//获取in
}

这将迭代页面中的所有tweet并提取内容。

您会遇到什么错误,您到底想在控制台中打印什么?
List<WebElement> tweets = driver.findElements(By.className("tweet")); //find all the <div> tags

for (WebElement tweet : tweets) {
    List<WebElement> tweetContent = tweet.findElements(By.xpath("*")); //find all intimidate children of the <div>

    String href = tweetContent.get(0).getAttribute("href"); //get href of the first <a>
    String timeStamp = tweetContent.get(1).findElement(By.tagName("a")).getText(); //get the content of the <a> in <span>
    String tweet = tweetContent.get(2).findElement(By.tagName("a")).getText(); //get the content of the <a> in <p>

}