干得好。
public class ScanWebSO {public static void main (String args[]){ document doc; try{ doc = Jsoup.connect("https://www.google.com/search?as_q=&as_epq=%22Yorkshire+Capital%22+&as_oq=fraud+OR+allegations+OR+scam&as_eq=&as_nlo=&as_nhi=&lr=lang_en&cr=countryCA&as_qdr=all&as_sitesearch=&as_occt=any&safe=images&tbs=&as_filetype=&as_rights=").userAgent("Mozilla").ignoreHttpErrors(true).timeout(0).get(); Elements links = doc.select("li[class=g]"); for (Element link : links) { Elements titles = link.select("h3[class=r]"); String title = titles.text(); Elements bodies = link.select("span[class=st]"); String body = bodies.text(); System.out.println("Title: "+title); System.out.println("Body: "+body+"n"); } } catch (IOException e) { e.printStackTrace(); }}}另外,要自己完成此操作,我建议您使用chrome。您只需右键单击要刮取的任何内容,然后检查元素。它将带您到该元素位于html的确切位置。在这种情况下,您首先要找出所有结果列表的根目录在哪里。找到该元素时,您要指定元素,最好指定一个唯一的属性进行搜索。在这种情况下,根元素是
<ol eid="" id="rso">
在其下,您将看到一堆以
<li >
这就是您要放入初始元素数组中的内容,然后对于每个元素,您都希望找到标题和正文所在的位置。在这种情况下,我发现标题位于
<h3 >
元件。因此,您将在每个清单中搜索该元素。身体也一样。我发现正文位于下面,因此我使用.text()方法进行搜索,然后返回该元素下的所有文本。关键是始终尝试查找具有原始属性的元素(使用类名是理想的)。如果不这样做,仅搜索“
div”之类的内容,它将在整个页面中搜索包含div的ANY元素并返回该元素。因此,您将获得比您想要的更多的结果。我希望这能很好地解释它。如果您还有其他问题,请告诉我。



