Python Scrapy:新手尝试传递空值
当我练习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
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