Для некоммерческого назначения колледжа Я пытаюсь очистить данные с веб-сайта www.rateyourmusic.com, используя структуру scrapy на python, у меня был небольшой успех, так как я смог очистить имя художник с страницы художника, но xpath для другой информации (дата рождения, национальность) мне сложно скрестить. кто-нибудь из вас знает, какой будет правильный xpath для этих объектов? вот мой метод синтаксического анализа, который, по крайней мере, работал для имени исполнителя.Python Scrapy Xpath?
def parse_dir_contents(self, response):
item = rateyourmusicartist()
for sel in response.xpath('//div/div/div/div/table/tbody/tr/td'):
item['dateofbirth'] = sel.xpath('td/text()').extract() #these two selectors aren't working
item['nationality'] = sel.xpath('td/a/text()').extract()
for sel in response.xpath('//div/div/div/div/div/h1'):
item['name'] = sel.xpath('text()').extract() #this is the one that works
yield item
здесь образец Адрес странице исполнителя Я выскабливание http://rateyourmusic.com/artist/kanye_west
Снимите 'TD /' от два XPath, которые в настоящее время не работают. Затем они должны работать. – gtlambert
Спасибо, что заметили, к сожалению, я уже пробовал это сделать, и это не сработало, я добавил td /, чтобы посмотреть, будет ли это иметь значение, будет ли разбор синтаксического разбора в два отдельных цикла? Я предположил, что мне придется, поскольку они находятся в разных частях источника страницы. – user3545370
Ваша проблема заключается в том, что вы ретранслируете по виртуальному DOM (я думаю, вы смотрите в инспекторе, чтобы получить структуру HTML). Вы должны проверить реальный источник на странице. F.x. на странице нет тега tbody, но только в виртуальном DOM. –