JSOUP 在 Android 中提取绝对 URL

JSOUP extract an absolute URL in Android

我到处找。尝试了很多 "solutions" 但其中 none 有帮助。 我需要从 html 代码中提取子网站的 url 地址。该代码包含很多 url,因此我需要以某种方式缩短结果列表,以便它只留下我需要的链接。

详情:

 <li class="container results-list-item clear-me ">
            <div class="job-offer-content container h-card">
                <div class="position-head container">
                  <div class="container  ">
                      <h2 class="p-job-title">
                          <a href="/praca/android-developer-junior-senior/wroclaw/11636002" rel="nofollow" 
                          title="praca Android developer (junior/senior) dolnośląskie" class="job-offer ">
                              <strong class="keyword">Android</strong> <strong class="keyword">developer</strong> (junior/senior)
                          </a>
                      </h2>
                          <h3 class="p-name company">
                                  <a href="/pracodawca/starware-firma-informatyczna-praca/843242">
                                      Starware Firma Informatyczna
                              </a>
                          </h3>

这只是html代码的一部分。正如我所说,它包含很多 url,因此像 doc.select("a").first(); 这样的想法无济于事。

我想从 <h2 class="p-job-title"> 部分中提取所有 url (它在代码中多次发生,因为它是在某些网站上搜索的结果)我也试过 doc.select("h2.p-job-title a[href]"); 但是输出是 Android developer (junior/senior) 并且我需要 /pracodawca/starware-firma-informatyczna-praca/843242 并且充其量是绝对形式)我认为 www.mywebsite + url 只是由一些 concat 或其他东西制作的所以它应该太难了)。

编辑:我的整个 activity class' 代码

public class ListaActivity extends ActionBarActivity{
    StartActivity startActiv;
    private List<String> mLista = new ArrayList<>();
    private ListView mListView;
    private MiastaListAdapter mAdapter;
    public Elements jobName, jobName2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_miast);  
        mListView = (ListView) findViewById(R.id.lista_miast);  
        new NewThread().execute();
        mAdapter = new MiastaListAdapter(this, mLista);
        mListView.setAdapter(mAdapter);
    }

    public class NewThread extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... arg) {
            String doURLwork = startActiv.nazwaStanowiska;
            String doURLplace = startActiv.nazwaMiejscowosci;

            Document doc;
            try {
                doc = (Document) Jsoup.connect("http://www.infopraca.pl/praca?q=" + doURLwork + "&lc=" + doURLplace)
                        .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0").get();

                jobName = doc.select("h2.p-job-title a[href]"); //infopraca

                    for (Element jobNames : jobName) {
                        mLista.add(jobNames.text() + "\n");
                    }

            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            mAdapter.notifyDataSetChanged();
        }
    }
}

您正在尝试从所选元素中获取文本。 mLista.add(jobNames.text() + "\n"); 这是错误的。如果您需要链接,您必须从您选择的元素中获取 attribute href

尝试这样的事情

Elements class= doc.getElementsByClass("p-job-title");
Elements link= class.select("a");
String url = link.attr("href");