Извлечение части тега с помощью Beautifulsoup

#python-3.x #beautifulsoup

#python-3.x #beautifulsoup

Вопрос:

Я пытаюсь извлечь только часть того, что находится между тегами на несколько простой веб-странице.

Это страница http://bridge.no/var/ruter/html/0237/2016-10-18.htm и я просто хочу первую «таблицу», которая находится между тегами. То, что я сделал, это именно это:

 import pandas as pd
from bs4 import BeautifulSoup
import urllib.request

adress = 'http://bridge.no/var/ruter/html/0237/2016-10-18.htm'
response = urllib.request.urlopen(adress)
html = response.read()

soup = BeautifulSoup(html)
pre = soup.find_all('pre')
  

И я думаю, что это была самая простая часть работы, после просмотра примеров с использованием BeautifulSoup я все еще понятия не имею, как это сделать. При просмотре исходного кода я вижу две возможные вещи для его разделения: name=’scoretables’ или
длинная строка тире. «—————————————————————-«

После этого я хотел бы поместить эту «таблицу» во фрейм данных pandas, но я думаю, что смог бы справиться с этой частью. Есть ли у кого-нибудь «профессиональные» советы о том, как использовать BeautifulSoup для выполнения того, что я хочу?

Ответ №1:

Чтобы получить текст из первой таблицы, вы могли бы просто извлечь первый элемент из .contents

 soup = BeautifulSoup(html,"lxml")
table = soup.find("pre").contents[0]
  

Или извлеките первый текст:

 table = soup.find("pre").find(text=True)
print(table)
  

Оба дадут вам:

 13 bord, 25 par, 1 blindpar. Antall spill: 27. Frirunde (*) gir innspilt prosent.

Plass  Par   Poeng       %  Navn                                          MNR      Klubb                        

    1    1    68,0    61,4  Simon Rasmussen - Rolf Normann Hansen     13838  8056  Kolbotn BK - Ski BK          
    2    2    56,0    59,4  Åge Seiersten - Truls Bjerkås             27817 24421  Brandbu BK - Posten BK       
    3   26    52,9 *  58,9  Knut Karlsen - Bjørn Roar Haugen          13153 14791  Kolbotn BK                   
    4   16    48,4 *  58,1  Kåre Bogø - Svein Arild Naas Olsen        29525 14358  Nittedal BK - Kolbotn BK     
    5   23    44,0    57,4  Per Arild Kvist - Raymond Frivåg          18774 11751  Ski BK - Kolbotn BK          

    6   14    34,0    55,7  Øyvind Bronken - Arne Almendingen         18763  4387  Kolbotn BK - Ski BK          
    7    9    32,0    55,4  Karl Johan Bjørn - Trond M. Thorgersen     7964 33905  Kolbotn BK                   
    8   10    26,0    54,4  Arild Basma - Odd Arne Bertheussen        25130 11589  Kirkenes BK - Kolbotn BK     
    9    5    23,0    53,9  Gerd Irene Knutsen - Einar Knutsen        30543 30542  Kolbotn BK                   
   10    3    17,0    52,9  Bjørn Tore Hallén - Sven-Åge Lund         27205 27206  Posten BK                    

         6    17,0    52,9  Hege Johansen - Elisabeth Johansen        32129 32031  Kolbotn BK                   
   12   13    14,0    52,4  Helge Lian - Bård Lian                    38230 31391  Kolbotn BK                   
   13    4    11,0    51,9  Sven Pran - Bjørn Arne Ruud                9704 23063  Kolbotn BK                   
   14   21     2,3 *  50,4  Olav Hjerkinn - Marit Hjerkinn              675 25417  Ski BK - Kolbotn BK          
   15   17    -8,0    48,7  Geir Liabø - Bjarne Erlandsen             32924 11158  Kolbotn BK - Ski BK          

   16   19   -10,0    48,3  Tove Wikerholmen - Per Gunnar E. Frislid  30926 40386  Kolbotn BK                   
   17   20   -13,0    47,8  Arnold Digre - Tim Nørgaard                5683 29591  Kolbotn BK - Bridgekameratene
   18   22   -17,0    47,1  Trond Østlie - Arvid Ek                   33024 32178  Kolbotn BK                   
   19   15   -27,0    45,5  Andreas Jansen - Dag Amund Lie            38503  3636  Kolbotn BK - Ski BK          
   20   11   -39,4 *  43,4  John Sandberg - Berit Hornhammar          18745 25418  Kolbotn BK                   

   21   12   -40,5 *  43,2  Toralf Brandvoll - Else Heldre            35159 30744  Kolbotn BK                   
   22    7   -42,8 *  42,8  Mette Hugin - Liv Kongelf                 41332 37002  Kolbotn BK                   
   23    8   -69,8 *  38,3  Laila K. Siltvedt - Wencke Thorstensen    39025 39026  Kolbotn BK                   
   24   24   -93,4 *  34,3  Harald Molteberg - Terje J. Eriksen       18843 42314  Ski BK - Kolbotn BK          
   25   18  -118,1 *  30,1  Leif Åge Bergseng - Ulf Kopperud          18740 41968  Kolbotn BK - Hjerter Konge  
  

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