scrapy中的新手:如何response.css刮掉文本部分?

Posted

技术标签:

【中文标题】scrapy中的新手:如何response.css刮掉文本部分?【英文标题】:newbie in scrapy : how to response.css scrape the text part? 【发布时间】:2014-09-12 20:51:20 【问题描述】:

当我练习时,我只想捕捉文本部分(1,2,3,4,5...),没有部分我怎么写 response.css("td[class='c1' ]")?

scrapy shell "https://tw.movies.yahoo.com/chart.html"
response.css("td[class='c1']")

【问题讨论】:

【参考方案1】:

这里有两种选择,一种使用css(),另一种使用xpath()

>>> response.css("td.c1 > span::text").extract()
[u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'13', u'14', u'15', u'16', u'17', u'18', u'19', u'20']
>>> response.xpath("//td[@class='c1']/span/text()").extract()
[u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9', u'10', u'11', u'12', u'13', u'14', u'15', u'16', u'17', u'18', u'19', u'20']

【讨论】:

哇,太神奇了!!但是有没有办法去掉'u'? @user2492364 只是一个unicode literal,不用担心。 你可以通过 .encode('utf8') 删除 u 在您的代码 - response.css("td[class='c1']") 中,您可以在引号前添加 ::text:response.css("td[class='c1']::text")

以上是关于scrapy中的新手:如何response.css刮掉文本部分?的主要内容,如果未能解决你的问题,请参考以下文章

Scrapy 从其他链接获取值

scrapy 调试功能

使用 css 选择器使用 scrapy 抓取 Reactjs 页面上的嵌套标签

刮痧。按内容查找标签

<br> 标签使用 scrapy 和 python 搞砸了我的数据

Scrapy/Python/XPath - 如何从数据中提取数据?