Использование BeautifulSoup для очистки данных - PullRequest
1 голос
/ 03 октября 2019

Я пытаюсь проанализировать HTML с BeautifulSoup, но не могу получить данные

<tr>
<td align="left" colspan="3" style="font-size:10.0pt;font-weight:800;" valign="top">49-009-41057
<td align="left" colspan="4" style="font-size:10.0pt;font-weight:800;" valign="top">CHESAPEAKE OPERATING LLC 
<td align="left" colspan="1" style="font-size:10.0pt;font-weight:800;" valign="top"> 
<tr>
<td align="left" colspan="3" style="border-top:none; border-left:none;border-bottom:none; border-right:none;padding:.01in .01in .01in .01in;height:6.75pt" valign="top"><span style="font-size:5.75pt;font-family:Arial;color:Darkgray;">Well Name</span></td>
<td align="left" colspan="4" style="border-top:none; border-left:none;border-bottom:none; border-right:none;padding:.01in .01in .01in .01in;height:6.75pt" valign="top"><span style="font-size:5.75pt;font-family:Arial;color:Darkgray;">Field</span></td>
<td align="left" colspan="1" style="border-top:none; border-left:none;border-bottom:none; border-right:none;padding:.01in .01in .01in .01in;height:6.75pt" valign="top"><span style="font-size:5.75pt;font-family:Arial;color:Darkgray;"> </span></td>
<tr>
<td align="left" colspan="3" style="font-size:10.0pt;font-weight:800;" valign="top">SFU 10-34-72 USAC TR 23H 
<td align="left" colspan="4" style="font-size:10.0pt;font-weight:800;" valign="top">WC 
<td align="left" colspan="1" style="font-size:10.0pt;font-weight:800;" valign="top">
<tr>
<td align="left" colspan="3" style="border-top:none; border-left:none;border-bottom:none; border-right:none;padding:.01in .01in .01in .01in;height:6.75pt" valign="top"><span style="font-size:5.75pt;font-family:Arial;color:Darkgray;">Surface Location</span></td>
<td align="left" colspan="1" style="border-top:none; border-left:none;border-bottom:none; border-right:none;padding:.01in .01in .01in .01in;height:6.75pt" valign="top"><span style="font-size:5.75pt;font-family:Arial;color:Darkgray;">Section</span></td>
<td align="left" colspan="2" style="border-top:none; border-left:none;border-bottom:none; border-right:none;padding:.01in .01in .01in .01in;height:6.75pt" valign="top"><span style="font-size:5.75pt;font-family:Arial;color:Darkgray;">Township/Range</span></td>
<td align="left" colspan="1" style="border-top:none; border-left:none;border-bottom:none; border-right:none;padding:.01in .01in .01in .01in;height:6.75pt" valign="top"><span style="font-size:5.75pt;font-family:Arial;color:Darkgray;">Latitude</span></td>
<td align="left" colspan="1" style="border-top:none; border-left:none;border-bottom:none; border-right:none;padding:.01in .01in .01in .01in;height:6.75pt" valign="top"><span style="font-size:5.75pt;font-family:Arial;color:Darkgray;">Longitude</span></td>
<tr>
<td align="left" colspan="3" style="font-size:10.0pt;font-weight:800;" valign="top">2188 FNL AND 984 FEL  ( SE NE )
<td align="left" colspan="1" style="font-size:10.0pt;font-weight:800;" valign="top">10 
<td align="left" colspan="2" style="font-size:10.0pt;font-weight:800;" valign="top">34 NORTH 72 WEST
<td align="left" colspan="1" style="font-size:10.0pt;font-weight:800;" valign="top">42.934003 
<td align="left" colspan="1" nowrap="" style="font-size:10.0pt;font-weight:800;" valign="top">-105.480115 

Мне удалось использовать BeautifulSoup, чтобы получить HTML

soup = BeautifulSoup(body, 'html.parser')
tr = soup.find_all('tr')

Как я могу получитьзначения API = 49-009-41057, компания = CHESAPEAKE OPERATING LL, название скважины = SFU 10-34-72 USAC TR 23H и т. д.?

1 Ответ

1 голос
/ 03 октября 2019

Подход BS,

soup = BeautifulSoup(body, 'html.parser')
trs = soup.find_all('tr')

for tr in trs:
    tds = tr.find_all('td')
    for td in tds:
        print(td.text)

или Вы можете попробовать с lxml и xpaths,

from lxml import html


html = html.parse(body)

td1 = html.xpath("//tr/td[1]")
for td in td1:
    print(td.text)
# repeat the same for other tds in the html body.

Вывод: Подход BS должен печататься в последовательном порядке. Подход lxml должен напечатать что-то вроде этого:

'49 -009-41057 '

' SFU 10-34-72 USAC TR 23H '

' 2188 FNL AND 984FEL (SE NE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...