java – 如何使用Twitter4J在推文中检索图像?
发布时间:2020-12-15 05:12:30 所属栏目:Java 来源:网络整理
导读:我想发出关键字或主题标签的查询,并从包含该关键字的所有推文中检索所有图像.我可以使用 Twitter4J与Java轻松发出查询并检索生成的推文.我知道http://t.co/xxxx链接我可以在浏览器中访问并查看相关图像.该图片位于https://pbs.twimg.com/xxxxx.所以我需要做
我想发出关键字或主题标签的查询,并从包含该关键字的所有推文中检索所有图像.我可以使用
Twitter4J与Java轻松发出查询并检索生成的推文.我知道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(); } } } } 解决方法
有一种更简单的方法来检索推文中的图像.如果推文插入了图像,您可以使用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! } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |