Java 解析JSoupURL
我可以根据文档解析Java 解析JSoupURL,java,android,html,css,jsoup,Java,Android,Html,Css,Jsoup,我可以根据文档解析hrefurl: Document doc = Jsoup.connect("http://jsoup.org").get(); Element link = doc.select("a").first(); String relHref = link.attr("href"); // == "/" String absHref = link.attr("abs:href"); // "http://jsoup.org/" 但我尝试在此网页中从css中提取链接url: 我需
href
url:
Document doc = Jsoup.connect("http://jsoup.org").get();
Element link = doc.select("a").first();
String relHref = link.attr("href"); // == "/"
String absHref = link.attr("abs:href"); // "http://jsoup.org/"
但我尝试在此网页中从css中提取链接url:
我需要采取的形象旗帜的链接。id是:id=“content\u heading”
但是图像是由css加载的
<div id="content_heading" style="background: url(http://images.multiplayer.it/thumbs/images/2014/06/10/assassins_creed_unity_jpg_1600x0_upscale_q85.jpg) center center; background-size: cover;">
其中urlnew
我将其声明为public-URL-urlnew
和postbimat
为位图
第二部分:
private class ContentViewImgUrl extends AsyncTask<Void,Void,Void> {
final Pattern pattern = Pattern.compile("url\\((.+?)\\)");
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(Void... params) {
try {
final Document doc = Jsoup.connect(URL).timeout(30000).get();
runOnUiThread(new Runnable() {
@Override
public void run() {
String url = doc.getElementById("content_heading").attr("style").toString();
Matcher matcher = pattern.matcher(url);
if(matcher.find()){
System.out.println(matcher.group(1));
indirizzostringaimg = matcher.group(1);
imgloader = ImageLoader.getInstance();
imgloader.init(ImageLoaderConfiguration.createDefault(getActivity()));
System.out.println(urlnew);
} else {
Toast.makeText(getActivity(), "Pic url error", Toast.LENGTH_SHORT).show();
}
}
});
} catch (Exception e) {
Log.e("ESEMPIO", "ERROR");
}
return null; // MODIFIED HERE
}
@Override
protected void onPostExecute(Void result) {
if(matcher.find()){
DisplayImageOptions opt = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.refresh)
.showImageForEmptyUri(R.drawable.refresh)
.cacheInMemory()
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.cacheOnDisc()
.build();
imgloader.displayImage(indirizzostringaimg, postimage_main, opt);
} else {
Toast.makeText(getActivity(), "Pic url error", Toast.LENGTH_SHORT).show();
}
}
}
私有类ContentViewImgUrl扩展异步任务{
final Pattern=Pattern.compile(“url\\(.+?)\\)”;
@凌驾
受保护的void onPreExecute(){}
@凌驾
受保护字符串doInBackground(无效…参数){
试一试{
最终文档doc=Jsoup.connect(URL).timeout(30000.get();
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
字符串url=doc.getElementById(“内容标题”).attr(“样式”).toString();
Matcher Matcher=pattern.Matcher(url);
if(matcher.find()){
系统输出println(匹配器组(1));
indirizzostringaimg=matcher.group(1);
imgloader=ImageLoader.getInstance();
init(ImageLoaderConfiguration.createDefault(getActivity());
System.out.println(urlnew);
}否则{
Toast.makeText(getActivity(),“picURL错误”,Toast.LENGTH_SHORT.show();
}
}
});
}捕获(例外e){
Log.e(“ESEMPIO”,“ERROR”);
}
返回null;//此处已修改
}
@凌驾
受保护的void onPostExecute(void结果){
if(matcher.find()){
DisplayImageOptions opt=新建DisplayImageOptions.Builder()
.showtubimage(R.drawable.refresh)
.showImageForEmptyUri(R.drawable.refresh)
.cacheInMemory()
.imageScaleType(imageScaleType.IN\u示例\u INT)
.cacheOnDisc()
.build();
imgloader.displayImage(indirizzostringaimg,postimage_main,opt);
}否则{
Toast.makeText(getActivity(),“picURL错误”,Toast.LENGTH_SHORT.show();
}
}
}
这里是一个完整的工作示例。得到你感兴趣的部分
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class Main {
public static void main(String[] args) {
String html = "<div id=\"content_heading\" style=\"background: url(http://images.multiplayer.it/thumbs/images/2014/06/10/assassins_creed_unity_jpg_1600x0_upscale_q85.jpg) center center; background-size: cover;\"></div>";
final Pattern pattern = Pattern.compile("url\\((.+?)\\)");
try {
Document doc = Jsoup.parse(html);
String url = doc.getElementById("content_heading").attr("style").toString();
Matcher matcher = pattern.matcher(url);
matcher.find();
System.out.println(matcher.group(1));
} catch(Exception e) {
e.printStackTrace();
}
}
}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
公共班机{
公共静态void main(字符串[]args){
字符串html=“”;
final Pattern=Pattern.compile(“url\\(.+?)\\)”;
试一试{
Document doc=Jsoup.parse(html);
字符串url=doc.getElementById(“内容标题”).attr(“样式”).toString();
Matcher Matcher=pattern.Matcher(url);
matcher.find();
系统输出println(匹配器组(1));
}捕获(例外e){
e、 printStackTrace();
}
}
}
更新
private class ContentViewImgUrl extends AsyncTask<String,String,String> {
final Pattern pattern = Pattern.compile("url\\((.+?)\\)");
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... params) {
try {
final Document doc = Jsoup.connect(URL).timeout(30000).get();
runOnUiThread(new Runnable() {
@Override
public void run() {
String url = doc.getElementById("content_heading").attr("style").toString();
Matcher matcher = pattern.matcher(url);
matcher.find();
System.out.println(matcher.group(1));
}
});
} catch (Exception e) {
Log.e("ESEMPIO", "ERROR");
}
return null; // MODIFIED HERE
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(SingleActivity.this, "url "+ imgUrlPost, Toast.LENGTH_SHORT).show();
}
}
私有类ContentViewImgUrl扩展异步任务{
final Pattern=Pattern.compile(“url\\(.+?)\\)”;
@凌驾
受保护的void onPreExecute(){}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
最终文档doc=Jsoup.connect(URL).timeout(30000.get();
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
字符串url=doc.getElementById(“内容标题”).attr(“样式”).toString();
Matcher Matcher=pattern.Matcher(url);
matcher.find();
系统输出println(匹配器组(1));
}
});
}捕获(例外e){
Log.e(“ESEMPIO”,“ERROR”);
}
返回null;//此处已修改
}
@凌驾
受保护的void onPostExecute(字符串结果){
Toast.makeText(SingleActivity.this,“url”+imgUrlPost,Toast.LENGTH_SHORT.show();
}
}
您无法在后台线程中创建Toast通知很抱歉,我错了。。不管怎样,现在我编辑问题,它返回“null”。有可能提取出那个链接吗?让我们。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class Main {
public static void main(String[] args) {
String html = "<div id=\"content_heading\" style=\"background: url(http://images.multiplayer.it/thumbs/images/2014/06/10/assassins_creed_unity_jpg_1600x0_upscale_q85.jpg) center center; background-size: cover;\"></div>";
final Pattern pattern = Pattern.compile("url\\((.+?)\\)");
try {
Document doc = Jsoup.parse(html);
String url = doc.getElementById("content_heading").attr("style").toString();
Matcher matcher = pattern.matcher(url);
matcher.find();
System.out.println(matcher.group(1));
} catch(Exception e) {
e.printStackTrace();
}
}
}
private class ContentViewImgUrl extends AsyncTask<String,String,String> {
final Pattern pattern = Pattern.compile("url\\((.+?)\\)");
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... params) {
try {
final Document doc = Jsoup.connect(URL).timeout(30000).get();
runOnUiThread(new Runnable() {
@Override
public void run() {
String url = doc.getElementById("content_heading").attr("style").toString();
Matcher matcher = pattern.matcher(url);
matcher.find();
System.out.println(matcher.group(1));
}
});
} catch (Exception e) {
Log.e("ESEMPIO", "ERROR");
}
return null; // MODIFIED HERE
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(SingleActivity.this, "url "+ imgUrlPost, Toast.LENGTH_SHORT).show();
}
}