Найти - Пользователи
Полная версия: Используя Grab вытащить href
Начало » Python для новичков » Используя Grab вытащить href
1
paraman
У меня есть html документ, в котором есть есть интересующий меня кусок:
<a id= href=" 106097682" >
        <span class="is-juice" title="juice">juice</span>
            Orange / Apple 3.7
            </a>
1) Как можно вытащить из этого куска href?
Пробовал так, но вылетает ошибка grab.error.DataNotFound: Xpath not found::
from grab import Grab
html2 = open('index.html', ‘r’)
html = html2.read()
g1 = Grab(html)
g1.xpath('//a/@href') #странно, но после кода //a съедает contains(./text(), “Orange / Apple 3.7”) в скобках

2)И второй вопрос, если есть переменная j = 3.7, можно ли как-то вытащить href, только по записи из переменной j?

Огромное спасибо, что уделяете моим вопросам своё время.
reclosedev
Правильный XPath:
'//a[contains(., "Orange / Apple 3.7")]/@href'

Про j = 3.7 не совсем понял. В lxml есть поддержка переменных, но не внутри строки:
doc = lxml.html.fromstring(html)
print doc.xpath('//a[contains(., $text)]/@href', text='Orange / Apple 3.7')
Поддерживает ли это Grab, не знаю.
paraman
Спасибо.
На тему j = 3.7
print doc.xpath('//a[contains(., $text)]/@href', text='Orange / Apple ',j)
- вот так сработает?
reclosedev
paraman
Спасибо.
На тему j = 3.7
print doc.xpath('//a[contains(., $text)]/@href', text='Orange / Apple ',j)
- вот так сработает?
Так нет.

Вот так должно:
doc.xpath('//a[contains(., $text)]/@href', text='Orange / Apple %s' % j)

Или вообще не без $переменных:
doc.xpath('//a[contains(., "Orange / Apple %s")]/@href' % j)
paraman
Столкнулся с тем, что в коде есть дубликат:
<a id=“106097234” href=“106097234”>
<span class=“is-juice” title=“juice”>juice</span>
Orange / Apple 3.7
</a>

<a tabindex=“1” href=“#toggle-content”>
<em class=“market-title”
>Orange / Apple 3.7</em>
</a>


И в выборку попадает #toggle-content.

p.s. Проблему решил
paraman
reclosedev
paraman
Спасибо.
На тему j = 3.7
print doc.xpath('//a[contains(., $text)]/@href', text='Orange / Apple ',j)
- вот так сработает?
Так нет.

Вот так должно:
doc.xpath('//a[contains(., $text)]/@href', text='Orange / Apple %s' % j)

Или вообще не без $переменных:
doc.xpath('//a[contains(., "Orange / Apple %s")]/@href' % j)

Сработало
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB