Я настраиваю свой первый Scrapy Spider, и у меня возникают трудности с использованием xpath для извлечения определенных элементов.
Моя цель http://www.cbooo.cn/m/641515 (китайский сайт похож на Box Office Mojo).Я могу без проблем извлечь китайское название фильма 阿龙 浴血 记, но не могу понять, как получить информацию под ним.Я считаю, что это потому, что HTML не является стандартным, как обсуждалось здесь .Под заголовком есть несколько элементов параграфа.
Я пробовал решение по ссылке выше, а также здесь , но безрезультатно.
def parse(self, response):
chinesetitle = response.xpath('//*[@id="top"]/div[3]/div[2]/div/div[1]/div[2]/div[1]/h2/text()').extract()
englishtitle = response.xpath('//*[@id="top"]/div[3]/div[2]/div/div[1]/div[2]/div[1]/h2/p').extract()
chinesereleasedate = response.xpath('//*[@id="top"]/div[3]/div[2]/div/div[1]/div[2]/div[1]/p[4]').extract()
productionregions = response.xpath('//*[@id="top"]/div[3]/div[2]/div/div[1]/div[2]/div[1]/p[6]').extract()
chineseboxoffice = response.xpath('//*[@id="top"]/div[3]/div[2]/div/div[1]/div[2]/div[1]/p[1]/span/text()[2]').extract()
yield {
'chinesetitle': chinesetitle,
'englishtitle': englishtitle,
'chinesereleasedate': chinesereleasedate,
'productionregions': productionregions,
'chineseboxoffice': chineseboxoffice
}
Когда я запускаю паука в оболочке Scrapy, паук находит название на китайском, как и ожидалось.Тем не менее, оставшиеся элементы возвращают либо [], либо странное смешивание текста на странице.
Любой совет?Это мой первый замечательный проект по программированию, поэтому я ценю ваше терпение с моим невежеством и вашу помощь.Спасибо!
РЕДАКТИРОВАТЬ
Попробовал реализовать метод очистки текста в комментариях.Пример в комментариях сработал, но когда я попытался переопределить его, я получил «Ошибка атрибута: у объекта« список »нет атрибута« разделение »» (см. Ниже примеры кассовых сборов в Китае, страну происхождения и примеры жанров)
def parse(self, response):
chinesetitle = response.css('.cont h2::text').extract_first()
englishtitle = response.css('.cont h2 + p::text').extract_first()
chinaboxoffice = response.xpath('//span[@class="m-span"]/text()[2]').extract_first()
chinaboxoffice = chinaboxoffice.split('万')[0]
chinareleasedate = response.xpath('//div[@class="ziliaofr"]/div/p[contains(text(),"上映时间")]/text()').extract_first()
chinareleasedate = chinareleasedate.split(':')[1].split('(')[0]
countryoforigin = response.xpath('//div[@class="ziliaofr"]/div/p')[6].xpath('text()').extract_first()
countryoforigin = countryoforigin.split(':')[1]
genre = response.xpath('//div[@class="ziliaofr"]/div/p[contains(text(),"类型")]/text()').extract_first()
genre = genre.split(':')[1]
director = response.xpath('//*[@id="tabcont1"]/dl/dd[1]/p/a/text()').extract()