在.csv之后仅在一个单元格中导出项目

时间:2018-05-12 17:37:38

标签: python web-scraping scrapy

拥有以下内容:

import scrapy

class ScrapeMovies(scrapy.Spider):
    name='final'

    start_urls = [
        'https://www.trekearth.com/members/'
    ]

    def parse(self, response):
        for entry in response.xpath('//table[@class="member-table"]'):
            yield{
                'name': entry.xpath('.//tr[@class="row"]/td/p/a/text()').extract()
            }

我想在单个页面上提取用户名,但是.csv导出名称在一个单元格中。怎么改变?什么是最合适的方法?

我在运行抓取工具时只需添加-o file.csv即可将文件保存为csv。

我收到的输出是第1行。

enter image description here

我想要的输出或多或少像3到5行。

请进一步解释为什么这个问题值得投票?为了提高我的问题质量,我想知道这一点。

1 个答案:

答案 0 :(得分:1)

看起来像是

entry.xpath('.//tr[@class="row"]/td/p/a/text()').extract()

实际上是一个名单列表。

尝试迭代它并为每个名称产生一个项目:

import scrapy

class ScrapeMovies(scrapy.Spider):
    name='final'

    start_urls = [
        'https://www.trekearth.com/members/'
    ]

    def parse(self, response):
        for entry in response.xpath('//table[@class="member-table"]'):
            for name in entry.xpath('.//tr[@class="row"]/td/p/a/text()').extract():
                yield {'name': name}