Как получить описание работы с помощью scrapy?

Я новичок в scrapy и XPath но программирование на Python на какое-то время. Я хотел бы получить email , name of the person making the offer и номер phone со страницы https://www.germanystartupjobs.com/job/joblift-berlin-germany-3-working-student-offpage-seo-french-market/ с использованием лучевой терапии. Как вы видите, электронная почта и телефон предоставляются как текст внутри <p> и это затрудняет извлечение.

Моя идея – сначала получить текст внутри Job Overview или, по крайней мере, весь текст, говорящий об этой соответствующей работе, и использовать ReGex для получения email , phone number и, если возможно, name of the person .

Итак, я выстрелил в scrapy shell с помощью команды: scrapy shell https://www.germanystartupjobs.com/job/joblift-berlin-germany-3-working-student-offpage-seo-french-market/ и получить response оттуда.

Теперь я пытаюсь получить весь текст из div job_description где я фактически ничего не получаю. я использовал

 full_des = response.xpath('//div[@class="job_description"]/text()').extract() 

Он возвращает [u'\t\t\t\n\t\t ']

Как получить весь текст с указанной страницы? Очевидно, задача будет позже, чтобы получить атрибуты, упомянутые ранее, но, во-первых, сначала.

Обновление: этот выбор возвращает только [] response.xpath('//div[@class="job_description"]/div[@class="container"]/div[@class="row"]/text()').extract()

введите описание изображения здесь

One Solution collect form web for “Как получить описание работы с помощью scrapy?”

Вы были рядом с

 full_des = response.xpath('//div[@class="job_description"]/text()').extract() 

У div -tag фактически нет никакого текста кроме того, что вы получаете.

 <div class="job_description" (...)> "This is the text you are getting" <p>"This is the text you want"</p> </div> 

Как вы видите, текст, который вы получаете с response.xpath('//div[@class="job_description"]/text()').extract() – это текст, который находится между div -tag, а не в между тегами внутри div -tag. Для этого вам понадобится:

 response.xpath('//div[@class="job_description"]//*/text()').extract() 

Это означает, что он выбирает все дочерние узлы из div[@class="job_description] и возвращает текст (см. Здесь, что делают разные xpaths).

Вы увидите, что это возвращает много ненужного текста, так как вы все еще получаете все \n и т. Д. Для этого я предлагаю вам сузить свой xpath до элемента, который вы хотите, вместо того, чтобы делать широкий подход.

Например, все должностные инструкции будут

 response.xpath('//div[@class="col-sm-5 justify-text"]//*/text()').extract() 
Python - лучший язык программирования в мире.