对于描述性统计分析,我需要抓取网页数据。
一条记录如下:
<div class="space"></div>
<p style="margin-bottom: -5px;">R110327</p>
<h1>Test</h1>
<div class="hline_index"></div>
<p>TestProfession<br>
city, street<br>
Tel: 129128312 Serie, Fax: 214213413<br>
Email: <a href="mailto:test">test</a><br>
Web: <a href="test.at" target="_blank">http://www.test.at</a><br>
<br>
Language: English<br>
Profession: meditation, sport<br></p>
<div class="hline_index"></div>
<div class="space"></div>
我正在使用selenium 2.42.2
这样做。出于测试目的,我试图收集fullName, profession and the street
。
public ArrayList<Person> getWantedFields() {
log.info("retrieve wanted fields");
resultList = new ArrayList<Person>();
WebElement fullName = driver.findElement(By.xpath("//h1"));
WebElement profession = driver.findElement(By.xpath("//p"));
WebElement street = driver.findElement(By.xpath("//p/br[1]"));
//2811 results
for (int i = 0; i < 2811; i++) {
resultList.add(new Person(fullName.getText(), profession.getText(), street.getText(), null, null, null, null, null));
}
log.info(resultList.toString());
return resultList;
}
然而,我只会回来:
[Person [fullName=Search, profession=, street=, ...
正如你所看到的那样,只有第一个字段给我的文本总是相同,而另外两个给我回来了#34;&#34;。
我认为我的xpath
是错误的,但是当我没有标识符时,我很想获得想要的字段。
有关如何获取这三个字段的任何建议吗?
感谢您的回答!
答案 0 :(得分:1)
您可能在之前有一些<p>
元素您要访问的元素。
您实际想要访问的所有元素都在<div id="content_head_folge">
。
因此,您应该使用//div[@id='content_head_folge']
启动每个使用的X路径。
List<WebElement> fullNames = driver.findElements(By.xpath("//div[@id='content_head_folge']/h1"));
List<WebElement> professions = driver.findElements(By.xpath("//div[@id='content_head_folge']/p"));
List<WebElement> streets = driver.findElements(By.xpath("//div[@id='content_head_folge']/p/br[1]"));
//2811 results
for (int i = 0; i < 2811; i++)
resultList.add(new Person(fullNames.get(i).getText(), professions.get(i).getText(), streets.get(i).getText(), null, null, null, null, null));