Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scrapy:新手尝试传递空值_Python_Xpath_Scrapy - Fatal编程技术网

Python Scrapy:新手尝试传递空值

Python Scrapy:新手尝试传递空值,python,xpath,scrapy,Python,Xpath,Scrapy,当我练习scrapy时,我有一个问题,下面是我的代码: class MySpider(Spider): name = "yahoochart" start_urls = ["https://tw.movies.yahoo.com/chart.html"] def parse(self, response): for sel in response.xpath('//tr'): ranking_list = sel.xpath("td[@class='c1']/spa

当我练习scrapy时,我有一个问题,下面是我的代码:

class MySpider(Spider):   
name = "yahoochart"
start_urls = ["https://tw.movies.yahoo.com/chart.html"]
def parse(self, response):
    for sel in response.xpath('//tr'):
        ranking_list = sel.xpath("td[@class='c1']/span/text()").extract()
        print ranking_list 
输出将是:

我打印并放置sel(下图),因为前3行没有计算sel.xpath(“td[@class='c1']/span/text()”).extract(),所以它将打印空值[]三次。 我想知道如何写可以传递空值(只需prinit[u'1'][u'2'].[u'20'])?或者唯一的方法是我必须编辑我的第一个选择器
response.xpath('//tr')
请教我,谢谢

这似乎是对代码的直接修改。只需检查
排名列表
是否为空,然后再打印即可

for sel in response.xpath('//tr'):
    ranking_list = sel.xpath("td[@class='c1']/span/text()").extract()
    if ranking_list:
        print ranking_list 

我不是一个模棱两可的专家,但它似乎是一个空列表,而不是一个“null”值(在python中称为None)

你可以用它来检查它的长度

if ranking_list:
    print ranking_list 


您的代码应该是这样工作的:

1) 响应中sel的
。xpath('//tr')
将从html页面获取所有
tr
标记

2) 对于上面的每个标记,
sel.xpath(“td[@class='c1']/span/text()”).extract()
将查找
,然后查找
标记,然后从
标记获取文本

再次检查页面的源代码,有3个
tr
标记没有全部
(第69、224、236行)。因此,当您打印时,它们将为空

if len(ranking_list) > 0:
    print ranking_list