Снова у меня, похоже, кирпичная стена с этим, и я надеюсь, что кто-то сможет ответить на него с головы.Scrapy - увеличивающееся число в строке
Вот пример кода ниже:
def parse_page(self,response):
hxs = HtmlXPathSelector(response)
item = response.meta['item']
item["Details_H1"] = hxs.select('//*[@id="ctl09_p_ctl17_ctl04_ctl01_ctl00_dlProps"]/tr[1]/td[1]/text()').extract()
return item
кажется, что @id
в Details_H1
может измениться. НАПРИМЕР. Для страницы это может быть @id="ctl08_p_ctl17_ctl04_ctl01_ctl00_dlProps
, а на следующей странице - @id="ctl09_p_ctl17_ctl04_ctl01_ctl00_dlProps
.
Я хотел бы реализовать эквивалент цикла do until
, чтобы код циклически повторял числа с приращениями 1 до тех пор, пока значение, получаемое XPath, не равно нулю. Так, например, я мог бы установить i = 108 и каждый раз i = i + 1 до hxs.select('//*[@id="ctl09_p_ctl17_ctl04_ctl01_ctl00_dlProps"]/tr[1]/td[1]/text()').extract()
<> []
Как я мог бы реализовать это?
Вашей помощи и вклад высоко оценили
EDIT 1
Фикса адресованного тротилом ниже. Код должен гласить:
def parse_page(self,response):
hxs = HtmlXPathSelector(response)
item = response.meta['item']
item["Details_H1"] = hxs.select('//*[contains(@id, "_p_ctl17_ctl04_ctl01_ctl00_dlProps")]/tr[1]/td[1]/text()').extract()
return item
Используйте глобальную переменную или аргумент, который служит в качестве счетчика, и отформатируйте свою строку, чтобы соответствовать этому. – aIKid
Я не слишком хорошо знаком с синтаксисом python. Не могли бы вы предоставить мне пример или связать меня со статьей, где она покрыта. – slixor