Форум сайта python.su
Доброе утро.
Помогите спарсить сайт с bs4 разобраться не могу.
response_gippo = requests.get('https://my.omesc.ru/meas/inp.htm?ls=13601608335') soup = BeautifulSoup(response_gippo.text, "html.parser") paragraphs = [] for x in soup.findAll('td'): paragraphs.append(str(x)) i=i+1 i = 0 z = 0 while i < len(paragraphs): if paragraphs[i].find('Электроэнергия')>1: string = paragraphs[i] z=i break i = i + 1
Офлайн
Может можно как то использовать xpath
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[1]/td[2] Номер счетчика 1
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[1]/td[3] Тариф
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[1]/td[5]/div показания
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[2]/td[1] Тариф
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[2]/td[2]/div показания
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[3]/td[1] Тариф
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[3]/td[2]/div показания
------------------------------------------------------------------------------------------------
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[4]/td[2] Номер счетчика 2
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[4]/td[3] Тариф
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody/tr[4]/td[5]/div показания
/html/body/table/tbody/tr/td[4]/div/form/table[1]/tbody
Офлайн
import requests from bs4 import BeautifulSoup from lxml import etree dom = etree.HTML (str(soup)) elements = dom.xpath('//.*[@class="a-table create"]')[0] print(elements)
Traceback (most recent call last):
File "C:\Users\Дом\PycharmProjects\telegram_bot\Net-query.py", line 35, in <module>
elements = dom.xpath('//.*[@class="a-table create"]')[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "src\lxml\etree.pyx", line 1600, in lxml.etree._Element.xpath
File "src\lxml\xpath.pxi", line 305, in lxml.etree.XPathElementEvaluator.__call__
File "src\lxml\xpath.pxi", line 225, in lxml.etree._XPathEvaluatorBase._handle_result
lxml.etree.XPathEvalError: Invalid expression
Офлайн
Scorp_1978А что там точка делает? XPath - это не регулярные выражения, это вообще другой язык.elements = dom.xpath('//.*[@class="a-table create"]')[0]
Офлайн
py.user.next
Офлайн
print (dom.xpath('//*[@class="a-table create"]')[0])
Traceback (most recent call last):
File "C:\Users\Дом\PycharmProjects\telegram_bot\Net-query.py", line 32, in <module>
print (dom.xpath('//*[@class="a-table create"]')[0])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range
Офлайн
Сработала вот эта конструкция
import requests
from bs4 import BeautifulSoup
from lxml import etree
response_gippo = requests.get('https://my.omesc.ru/meas/inp.htm?ls=13601608335')
soup = BeautifulSoup(response_gippo.text, "html.parser")
dom = etree.HTML(str(soup))
i=0
while i < len(dom.xpath('//div/text()')):
print (dom.xpath('//div/text()')[i])
i=i+1
C:\Users\Дом\PycharmProjects\telegram_bot\venv\Scripts\python.exe C:\Users\Дом\PycharmProjects\telegram_bot\Net-query.py
909
18460
4722
11320
print (dom.xpath('//div/text()')[i])
print (dom.xpath('//td/text()')[i])
Офлайн
вот так не работает
dom.xpath('[//td/ and //div/]text()')
dom.xpath('[//td/text() and //div/]text()')
dom.xpath('[//td/text()' and '//div/]text()')
Отредактировано Scorp_1978 (Окт. 17, 2023 09:38:26)
Офлайн
Наверное стоит перестать угадывать и почитать что нить на предмет xpath
https://www.w3schools.com/xml/xpath_syntax.asp
//td | //div
Офлайн
ZerG, спасибо за ссылочку но
suite = dom.xpath('[//td/ | //div/]text()') suite = dom.xpath('[//td/text() | //div/]text()') suite = dom.xpath('[//td/text()' | '//div/]text()')
Офлайн