Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 8, 2016 15:28:52

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

html xpath (replace | strip)

s = requests.Session()
url = "http:127.0.0.1/index"
passwd = "12345"
r = s.post(url, passwd)
g = s.get('url')
doc = lxml.html.document_fromstring(g.text)
v = doc.xpath('//tr[1]/td[2]/text()[1]')
print v
на выводе
[u'\xa0 \n                  PARSE ME \xa0\xa0\xa0&nbsp PARSE ME:CE&nbsp(', 'ok']
а хотелось бы 
[PARSE ME: PARSE ME]
отсюда 2 вопроса:
1. Почему если в doc.xpath('html/body/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/text()') полный путь (copy xpath text) то это не работает?
2. как отрезать лишние аски ?
regex,replace, не помогли…

Офлайн

#2 Апрель 9, 2016 01:36:40

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

html xpath (replace | strip)

Вот тебе пример

>>> import lxml.html
>>> 
>>> doc = lxml.html.fromstring('<b>abcd</b>')
>>> text = doc.xpath(r'//b/text()')[0]
>>> text
'abcd'
>>>



Офлайн

#3 Апрель 12, 2016 10:17:37

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

html xpath (replace | strip)

спасибо, решил так:

doc = lxml.html.document_fromstring(g.text)
v = doc.xpath('//tr[1]/td[2]/text()[1]')
v1 = re.search('regexp', v[0].encode('utf-8'))
print v1.group(0)

Офлайн

#4 Апрель 12, 2016 11:36:20

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

html xpath (replace | strip)

Не надо у text() брать первый элемент. А v1.group(0) даст “regexp” в любом случае, поэтому достаточно просто проверить v1 на None.



Офлайн

#5 Апрель 12, 2016 12:52:17

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

html xpath (replace | strip)

py.user.next
Не надо у text() брать первый элемент. А v1.group(0) даст “regexp” в любом случае, поэтому достаточно просто проверить v1 на None.
извиняюсь за пример, на практике
regexp text() без [1]
поясните пожалуйста надобность проверки v1 на None
и как в таком случае print v1 ?

Отредактировано papuas (Апрель 12, 2016 12:52:41)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version