【发布时间】:2015-05-15 20:15:52
【问题描述】:
我一直在到处寻找。尝试了很多“解决方案”,但没有一个有帮助。 我需要从 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代码的一部分。正如我所说,它包含很多网址,所以像doc.select("a").first(); 这样的想法将无济于事。
我想从<h2 class="p-job-title"> 部分提取所有网址(它在代码中多次出现,因为它是在某个网站上搜索的结果)我也尝试过doc.select("h2.p-job-title a[href]");,但输出是Android developer (junior/senior),我需要@ 987654327@ 最好是绝对形式)我认为 www.mywebsite + url 只是由一些 concat 或其他东西制作的,所以它不应该很难)。
编辑:我的整个活动课程的代码
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();
}
}
}
【问题讨论】:
-
你的选择有误,应该选择“h3 a[href]”
-
它没有改变任何东西。输出现在是“Starware Firma Informatyczna”,但我需要获取一个 URL。
-
您能否以正确格式向我们展示您正在使用的确切代码?
-
这是我需要从中提取代码的网站:infopraca.pl/praca?q=android+developer&lc=Wroclaw
-
您正在尝试从您的元素中获取文本。很明显 jobNames.text();将返回文本。
标签: java android html parsing jsoup