Tyl*_*ers 3 java twitter twitter4j
我想发出关键字或主题标签的查询,并从包含该关键字的所有推文中检索所有图像.我可以使用带有Java的Twitter4J轻松发出查询并检索生成的推文.我知道http://t.co/xxxx我可以在浏览器中访问的链接并查看相关图像.那个图像在https://pbs.twimg.com/xxxxx.所以我需要做的就是在我的代码中完成这个过程!
我可以http://t.co/xxxx很容易地解析每条推文中的链接.但是,当我从该链接中检索所有html时,我看不到任何https://pbs.twimg.com/xxxx图像:(.我认为正在发生的事情是Twitter正在通过JavaScript加载这些图像.
有什么方法可以轻松检索每条推文上的图像吗?
这是我到目前为止:
package com.company;
import twitter4j.*;
import twitter4j.conf.ConfigurationBuilder;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) throws Exception {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("xxxxxxxxxx")
.setOAuthConsumerSecret("xxxxxxxxxxxx")
.setOAuthAccessToken("xxxxxxxxx-xxx-xxxxxxxx")
.setOAuthAccessTokenSecret("xxxxxxxxxxxxxxxxxxx");
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
Query query = new Query("#hashtag");
QueryResult result = twitter.search(query);
Pattern pattern = Pattern.compile("http://t.co/\\w{10}");
Pattern imagePattern = Pattern.compile("https\\:\\/\\/pbs\\.twimg\\.com/media/\\w+\\.(png | jpg | gif)(:large)?");
for (Status status : result.getTweets()) {
if (status.isRetweet())
continue;
System.out.println("@" + status.getUser().getScreenName() + ":" + status.getText());
Matcher matcher = pattern.matcher(status.getText());
if (matcher.find()) {
System.out.println("found a t.co url");
URL oracle = new URL(matcher.group());
BufferedReader in = new BufferedReader(
new InputStreamReader(oracle.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
matcher = imagePattern.matcher(inputLine);
if (matcher.find())
System.out.println("YAYAAYAYAYYAYAYAYAYAYAYAYAYAAYAYYAYAAYYAYAYAYA: " + matcher.group());
}
in.close();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Fea*_*Doe 13
有一种更简单的方法来检索推文中的图像.
如果推文中插入了图像,您可以使用它getMediaEntities()来获取媒体数据,然后检索网址getMediaURL()
你应该做这样的事情
MediaEntity[] media = status.getMediaEntities(); //get the media entities from the status
for(MediaEntity m : media){ //search trough your entities
System.out.println(m.getMediaURL()); //get your url!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4404 次 |
| 最近记录: |