首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CSS选择器和Python对表中的多行单元格进行and抓取

使用CSS选择器和Python对表中的多行单元格进行and抓取
EN

Stack Overflow用户
提问于 2016-08-24 20:35:50
回答 1查看 338关注 0票数 2

因此,我在网页上抓取一个页面(http://canoeracing.org.uk/marathon/results/burton2016.htm),其中表中有多行单元格:

我使用下面的代码来抓取每一列(下面的一列恰好刮掉了名称):

代码语言:javascript
复制
import lxml.html
from lxml.cssselect import CSSSelector

# get some html
import requests

r = requests.get('http://canoeracing.org.uk/marathon/results/burton2016.htm')
# build the DOM Tree
tree = lxml.html.fromstring(r.text)
# construct a CSS Selector
sel1 = CSSSelector('body > table > tr > td:nth-child(2)')
# Apply the selector to the DOM tree.
results1 = sel1(tree)
# get the text out of all the results
data1 = [result.text for result in results1]

不幸的是,它只是从每个单元格中返回名称,而不是同时返回两者。我在webscraping工具Kimono上尝试过类似的东西,并且我能够同时抓取这两种工具,但是当Kimono在多个网页上运行时,我想发送Python代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-24 20:40:57

问题是,有些单元格包含由<br>分隔的多个文本节点。在这种情况下,查找所有文本节点并加入它们:

代码语言:javascript
复制
data1 = [", ".join(result.xpath("text()")) for result in rows] 

对于屏幕截图中提供的行,您将得到:

代码语言:javascript
复制
OSCAR HUISSOON, FREJA WEBBER
ELLIE LAWLEY, RHYS TIPPINGS
ALLISON MILES, ALEX MILES
NICOLA RUDGE, DEBORAH CRUMP

您也可以使用.text_content()方法,但是您将失去文本节点之间的分隔符,从而在结果中得到类似于OSCAR HUISSOONFREJA WEBBER的内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39132613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档