我是 xpath 的新手,我正在尝试使用 scrapy 中的 xpath 表达式来抓取网站。 我试图抓取的页面结构是-
...
<div class="article-body">
<p class="body">Text1</p>
<p class="body">Text2</p>
<p class="body">Text3</p>
...
我正在尝试的 xpath 是-
//div[@class="article-body"]/p/text()
但我得到的只是Text1
在我的数据库中。取而代之的是,我希望输出为-
Text1.Text2.Text3
我想我应该使用 concat
或 string-join
或类似的功能。但我无法解决。由于我必须将此 xpath 表达式作为参数传递给 scrapy,因此我只需要将它作为单个表达式。
我试着给 concat
喂食功能进入我的 django-scraper as-
concat(//div[@class="article-body"]/p)
但它向我抛出了这个错误-
File "C:\Anaconda2\lib\site-packages\scrapy\selector\unified.py", line 100, in xpath raise ValueError(msg if six.PY3 else msg.encode("unicode_escape"))
我尝试时遇到了同样的错误(页面上没有其他 <p>
元素)-
concat(//p)
或
string-join(//p)
但是,当我尝试时,string(//p)
我得到 Text1
在我的数据库中。
最佳答案
你试过这个吗:-
concat(//div[@class="article-body"]/p)
String values = myTestDriver.findElement(By.xpath("concat(//div[@class="article-body"]/p)"));
或
你需要做这样的事情
ArrayList<String> name;
String name1;
List<WebElement> options = myTestDriver.findElements(By.xpath("//div[@class="article-body"]/p"));
System.out.println(options.size());
for(int i=0 ; i<options.size() ; i++){
System.out.println(options.get(i).getText());
name1 = options.get(i).getText();
name.add(name1);
}
现在你可以执行连接了
关于xml - 如何使用 xpath 表达式将多个文本节点选择为单个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34543787/