【问题标题】:Scrapy extract from children儿童刮痧提取物
【发布时间】:2013-08-04 09:20:49
【问题描述】:

这是我要提取的来自 www.example, com 的源代码。如果有人能解释我需要提取什么。

<table>
    <tr>
        <td colspan="5" style="text-align:left;padding-left:4px;" class="category"><img-src="http://www.example.com/images/menu.gif">TEXT in td 1 </td>
    </tr>
    <tr>
        <td class="date" colspan="5">TEXT in td 2</td>
    </tr>
    <tr>
        <td style="test-align:left;width:40px;">TEXT in td 3</td>
        <td style="padding-right:4px; width:180px;text-align:right">TEXT in td 4</td>
        <td style="width:40px;text-align:center"> TEXT in td 5</td>
        <td style="padding-left:5px; width:180px;text-align:left">TEXT in td 6</td>
        <td style="width:40px;text-align:center"></td>
    </tr>
</table>

这是我要提取的代码。我想提取每个单独的文本, 文字 4、5 和 6 am 画得很好。文本 1、2 和 3,如果有人能告诉我如何提取。提前致谢!

    item['TEXT in td 1'] = app.select('//td[2]//text()').extract()
    item['TEXT in td 2'] = app.select('//td[3]/text()').extract()
    item['TEXT in td 3'] = app.select('td[4]/text()').extract()
    item['TEXT in td 5'] = app.select('td[3]//text()').extract()
    item['TEXT in td 4'] = app.select('td[2]/text()').extract()
    item['TEXT in td 6'] = app.select('td[4]/text()').extract()

This a extract Scrapy:

2013-08-04 11:27:11+0300 [app] DEBUG: Scraped from <200 />
        {'TEXT in td 1': [u'', u'TEXT in td 1'],
         'TEXT in td 2': [u'August 04'],
         'TEXT in td 6': [],
         'TEXT in td 5': [],
         'TEXT in td 4': [],
         'TEXT in td 6': []}
2013-08-04 11:27:11+0300 [app] DEBUG: Scraped from <200 />
        {'TEXT in td 1': [u'', u'TEXT in td 1'],
         'TEXT in td 2': [u'August 04'],
         'TEXT in td 6': [u'TEXT in td 6'],
         'TEXT in td 5': [u'TEXT in td 5'],
         'TEXT in td 4': [u'TEXT in td 4'],
         'TEXT in td 6': [u'TEXT in td 6']}

【问题讨论】:

  • 如果您可以编辑您的问题以包含您的完整蜘蛛代码(以及被抓取的网站),那么我们提供帮助会容易得多。 :)

标签: python extract scrapy


【解决方案1】:

这可能会如下完成(我没有scrapy,但是你的Xpaths有问题)

 item['TEXT in td 1'] = app.select('//table/tr[1]/td[1]//text()').extract()
 item['TEXT in td 2'] = app.select('//table/tr[1]/td[2]/text()').extract()
 item['TEXT in td 3'] = app.select('//table/tr[2]/td[1]/text()').extract()
 item['TEXT in td 5'] = app.select('//table/tr[2]/td[2]/text()').extract()
 item['TEXT in td 4'] = app.select('//table/tr[3]/td[1]/text()').extract()
 item['TEXT in td 6'] = app.select('//table/tr[3]/td[2]/text()').extract() 

我们正在做的是(假设一个表)我们正在获取表的每一行(观察 tr[1]、tr[2] 等,然后访问这些行中的单元格观察 td[1]、td[2] 等。

【讨论】:

  • 谢谢,普拉哈拉德!不能正常工作。我在同一个源代码上有多个表,现在从单个项目中的所有表中提取。
  • @Floriano 在这种情况下,您也可以使用 table* 来使用用户下标,就像我们使用 trtd.
  • 我的问题是如何提取文本1、2和3。我试试:item['TEXT in td 1'] = app.select('//td[2]/ img/@src/text()').extract()) 但我不知道如何提取。我在谷歌上阅读了如何提取。
  • 感谢 Prahalad,我已将 / / * 表包含在 XPATH 中,我按照您所说的使用 trtd 但所有 td 文本 都被提取到一个项目中。我该怎么办?
  • 如果可以的话,能否附上完整的爬取源代码和你要爬取的网站?另外,请粘贴您当前正在获取的输出。
猜你喜欢
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多