python - 用字符串 "None"替换 Scrapy.css 返回的空/空白数据

标签 python css scrapy

我在 Windows Vista 64 位上使用 Python.org 版本 2.7 64 位。我有以下代码摘录,它根据 HTML 表格的一部分内容创建一个字符串:

...

for row in rows

    incident = " ".join( row.css('.incidents-icon::attr(title)').extract() ).strip() + ','

    incident1 = str(incident) 
        if incident1 == "":
            incident1 = "None"

然后,字符串 incident1 与其他变量一起写入 .csv 文件。这一切都很好,但有时表中没有返回结果,所以我想用“无”一词替换它们。

我也试过:

incident1 = str(incident) 
        if not incident1:
            incident1 = "None"

我知道 Stack Overflow 上有几个关于 null 或空字符串的问题示例,但是给出的答案似乎并没有解决我的问题。在第一个示例中,代码执行良好,但仍会返回 null/空白字符串。在第二个代码中,代码没有正确执行。它不会出错,但程序不会遍历表中的所有行,也不会将输出写入 .csv 文件。为了说明这一点,我的完整代码如下:

from scrapy.spider import Spider
from scrapy.selector import Selector
from scrapy.utils.markup import remove_tags
from scrapy.cmdline import execute
import csv


class MySpider(Spider):

    name = "goal2"
    allowed_domains = ["whoscored.com"]
    start_urls = ["http://www.whoscored.com/Players/3859/Fixtures/Wayne-Rooney"]    

    def parse(self, response):
        sel = Selector(response)

        titles = sel.xpath("normalize-space(//title)")
        print 'titles:', titles.extract()[0]

        rows = sel.xpath('//table[@id="player-fixture"]//tbody//tr')

        for row in rows:

            print 'date:', "".join( row.css('.date::text').extract() ).strip()
            print 'result:', "".join( row.css('.result a::text').extract() ).strip()
            print 'team_home:', "".join( row.css('.team.home a::text').extract() ).strip()
            print 'team_away:', "".join( row.css('.team.away a::text').extract() ).strip()
            print 'info:', "".join( row.css('.info::text').extract() ).strip(), "".join( row.css('.info::attr(title)').extract() ).strip()
            print 'rating:', "".join( row.css('.rating::text').extract() ).strip()
            print 'incidents:', ", ".join( row.css('.incidents-icon::attr(title)').extract() ).strip()
            print '-'*40

            date = "".join( row.css('.date::text').extract() ).strip() + ','
            result = "".join( row.css('.result a::text').extract() ).strip() + ','
            team_home = "".join( row.css('.team.home a::text').extract() ).strip() + ','
            team_away = "".join( row.css('.team.away a::text').extract() ).strip() + ','
            info = "".join( row.css('.info::text').extract() ).strip() + ','
            rating = "".join( row.css('.rating::text').extract() ).strip() + ','
            incident = " ".join( row.css('.incidents-icon::attr(title)').extract() ).strip() + ','

            date1 = str(date)
            if date1 == "":
                date1 = "None"
            result1 = str(result)
            #if not result1:
                #result1 = "None"
            team_home1 = str(team_home)
            #if not home1:
                #home1 = "None"
            team_away1 = str(team_away)
            #if not team_away1:
                #team_away1 = "None"
            info1 = str(info)
            #if not info1:
                #info1 = "None"
            rating1 = str(rating)
            #if not rating1:
                #rating1 = "None"
            incident1 = str(incident) 
            if incident1 == "":
                incident1 = "None"

            mystring = date1 + result1 + team_home1 + team_away1 + info1 + rating1 + incident1 
            #print remove_tags(mystring).encode('utf-8')

            filepath = "C:\\Python27\\Football Data\\test" + ".txt"



            with open(filepath, "a") as f:
                f.write(mystring)
                f.close()



execute(['scrapy','crawl','goal2'])

我认为因为 .css 函数中有一个 .strip() 实例,所以这将确保该字段不只是返回所有空格。如果在表的该行中找不到匹配的数据,那么使用 .css 创建的变量是否真的会解析为“”?是这样,为什么我的第一个例子不起作用?如果不是,我应该改用什么语法?

谢谢

最佳答案

问题是我在字符串末尾添加了一个“,”作为 .csv 文件中的分隔符,因此没有进球或助攻等发生的变量将解析为“,”而不是“”。我现在修改了逻辑。

关于python - 用字符串 "None"替换 Scrapy.css 返回的空/空白数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24781052/

相关文章:

linux - 如何使用密码保护Scrapyd UI?

python - 单击 Scrapy-Splash 中的按钮

python - 在 doctests 中修改全局变量

javascript - 将 D3 图表居中 + 添加响应能力

html - CSS、HTML - 站点在 Internet Explorer 中显示非常错误

javascript - 通过单击关闭模式弹出窗口

Scrapyd在子目录中找不到代码

python - 这个异常是如何工作的?

python - 分组一些线程函数Python

python - 为什么打印文件时会出现这些引号?