Java HTML(twitter)解析
我正在解析一个网站,其中的内容通常是一些tweet,因此我只想获取tweet,我检查了网站结构,我想从中获取信息的代码如下所示: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
<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>
}