Python 使用Scrapy遍历表行
是否可以扫描表中的一行并仅更改列,以获得一系列数字。我目前正在使用许多变量 例如:Python 使用Scrapy遍历表行,python,scrapy,Python,Scrapy,是否可以扫描表中的一行并仅更改列,以获得一系列数字。我目前正在使用许多变量 例如: response.xpath('/html/body/div/table/tr[6]/td[counter in range 2 - 9]/p/span/text()').extract() 代码: class MainSpider(scrapy.Spider): name = "main-spider" start_urls = ['http://www.institutosantaterez
response.xpath('/html/body/div/table/tr[6]/td[counter in range 2 - 9]/p/span/text()').extract()
代码:
class MainSpider(scrapy.Spider):
name = "main-spider"
start_urls = ['http://www.institutosantatereza.com.br/boletins/turma_3_ano_ensino_medio/1652.htm']
def parse(self, response):
nome = response.xpath('/html/body/div/table/tr[2]/td[2]/p/b/span/text()').extract()
serie = response.xpath('/html/body/div/table/tr[2]/td[7]/p/b/span/text()').extract()
portugues1 = response.xpath('/html/body/div/table/tr[6]/td[2]/p/span/text()').extract()
portugues2 = response.xpath('/html/body/div/table/tr[6]/td[3]/p/span/text()').extract()
portuguesMedia1 = response.xpath('/html/body/div/table/tr[6]/td[4]/p/span/text()').extract()
yield{
"nome": nome[0],
"serie": serie[0],
"url": response.url,
"disciplinas":{
"portugues":{
'nota1': portugues1[0],
'nota2': portugues2[0],
'media1': portuguesMedia1[0],
}
}
}
无需使用许多变量:
yield{
"nome": nome[0],
"serie": serie[0],
"url": response.url,
"disciplinas":{
"portugues":{
'nota1': response.xpath('/html/body/div/table/tr[6]/td[2]/p/span/text()').extract_first(), # or .get()
'nota2': response.xpath('/html/body/div/table/tr[6]/td[3]/p/span/text()').get(), # or .extract_first()
}
}
}
如果您想获取多个元素,则可以获取包含所有行的列表,而不是
[6]
,将其在Python所有行[2:9]
中切片,然后使用for
-循环分别处理每一行-以获取列中的文本。另请参阅