Уведомления

Группа в Telegram: @pythonsu

#1 Май 5, 2016 21:57:08

izuchaju_python
Зарегистрирован: 2016-04-17
Сообщения: 55
Репутация: +  2  -
Профиль   Отправить e-mail  

lxml and xpath

Помогите разобраться в том, как делать xpath поиск на веб странице с помощью этой библиотеки, допустим есть у нас страница Your text to link here… хотим мы получить только названия вакансий с этой страницы именно xpath - ом, подобрали мы xpath

//h1[contains(@id, 'h')][contains(@id, '-name')]
, плюс используем библиотеку requests
import requests
page = requests.get('http://www.work.ua/jobs-kyiv/?advs=1&days=125&page=1')
а вот дальше что?!
Какой модуль lxml мы импортируем?!
from lxml import etree
или
from lxml import html
или оба?!)
ну с импортом то разобраться можно…
а вот , как это сделать, нужен пример. а то в сети не нашел.
в общем help!

Отредактировано izuchaju_python (Май 5, 2016 22:02:14)

Офлайн

#2 Май 6, 2016 06:03:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

lxml and xpath

izuchaju_python
Какой модуль lxml мы импортируем?!
Для работы с html-страницей используется lxml.html, потому что html не является подмножеством xml. В html-документе могут быть незакрытые теги, тогда как xml-документ с незакрытыми тегами считается повреждённым.



Офлайн

#3 Май 6, 2016 06:33:57

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

lxml and xpath

Не знаю, у кого как, но у меня с lxml, xpath и прочими “супер-пупер работающими модулями” категорическая несостыковка.

Прокся сейчас не пускает со скрипт на сайт, поэтому код предварительно скопировал в буфер обмена:

# coding: utf8
import urllib.request
import re
from tkinter import*
# без этого буфер не работает
root = Tk()
#беру код из буфера
full=root.clipboard_get()
#Это работающий запрос к сайту
#response = urllib.request.urlopen("http://numweek.ru/")
#html = str(response.read())
result = re.findall(r'\<h2\>[\<ahref\s=\"\/]*jobs\/[\d\/\"\stitle=]*([А-я\s]*)',full)
print(result)

Результат:
['Помощник косметолога', 'Продавец', 'Продавец', 'Мастер маникюра', 'Менеджер по обзвону', 'Менеджер активных продаж', 'Продавец', 'Продавец', 'Продавец', 'Продавец', 'Швея', '', 'Водитель со своим авто', 'Бариста']

Офлайн

#4 Май 6, 2016 06:49:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

lxml and xpath

Kir@
но у меня с lxml, xpath и прочими “супер-пупер работающими модулями” категорическая несостыковка
А можно пример?



Офлайн

#5 Май 6, 2016 06:51:07

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

lxml and xpath

FishHook
Нет - у меня седативные закончились.

Офлайн

#6 Май 6, 2016 13:31:37

izuchaju_python
Зарегистрирован: 2016-04-17
Сообщения: 55
Репутация: +  2  -
Профиль   Отправить e-mail  

lxml and xpath

так кто-нибудь покажет , как делать запрос по xpath?

Офлайн

#7 Май 6, 2016 14:01:22

izuchaju_python
Зарегистрирован: 2016-04-17
Сообщения: 55
Репутация: +  2  -
Профиль   Отправить e-mail  

lxml and xpath

import requests
from lxml import html
page = requests.get('http://www.work.ua/jobs-kyiv/?advs=1&days=125&page=1')
tree = html.fromstring(page.content)
buyers = tree.xpath("//h1[contains(@id, 'h')][contains(@id, '-name')]")
что-то не то

Офлайн

#8 Май 7, 2016 09:26:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

lxml and xpath

>>> import requests
>>> from lxml import html
>>> 
>>> page = requests.get('http://www.work.ua/jobs-kyiv/?advs=1&days=125&page=1')
>>> 
>>> tree = html.fromstring(page.content)
>>> buyers = tree.xpath(".//h2/a[contains(@href, 'jobs')]/text()")
>>> buyers
['Менеджер по работе с клиентами, консультант в торговый зал', 'Менеджер по обслуживанию клиентов (продажа ДСП и мебельных комплектующих)', 'Финансовый менеджер (в консалтинг)', 'Заместитель дирктора', 'Audio software engineer', 'Дизайнер мебели', 'Член бригади ресторану (ст. м. Петровка)', 'Член бригади ресторану (ст. м. Майдан Незалежності)', 'Член бригади ресторану (ст. м. Хрещатик)', 'SEO-специалист', 'Член бригади ресторану (ст. м. Льва Толстого)', 'Член бригади ресторану (ст. м. Дарниця)', 'Ассистент менеджера по закупкам', 'HR-менеджер']
>>>



Отредактировано py.user.next (Май 7, 2016 09:27:08)

Офлайн

#9 Май 7, 2016 12:04:31

izuchaju_python
Зарегистрирован: 2016-04-17
Сообщения: 55
Репутация: +  2  -
Профиль   Отправить e-mail  

lxml and xpath

py.user.next
в общем неправильный у меня xpath, верно?! где-то не так сделал…спасибо. будем учить.

Офлайн

#10 Май 7, 2016 12:25:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

lxml and xpath

izuchaju_python
в общем неправильный у меня xpath, верно?!
У тебя там квадратные скобки от квадратных скобок берутся. Так никогда не делают. Квадратные скобки в xpath означают область для условия. Нельзя на них смотреть как на индекс элемента.
xpath. tutorial



Отредактировано py.user.next (Май 7, 2016 12:26:52)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version