Что эта функция делает в Python с участием urllib2 и BeautifulSoup?

1

Итак, я задал вопрос о получении высоких баллов из html-страницы, а другой пользователь дал мне следующий код, который поможет. Я новичок в python и beautifulsoup, поэтому я пытаюсь пройти через некоторые другие коды по частям. Я понимаю большую часть этого, но я не понимаю, что это за код и какова его функция:

    def parse_string(el):
       text = ''.join(el.findAll(text=True))
       return text.strip()

Вот весь код:

from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup
import sys

URL = "http://hiscore.runescape.com/hiscorepersonal.ws?user1=" + sys.argv[1]

# Grab page html, create BeatifulSoup object
html = urlopen(URL).read()
soup = BeautifulSoup(html)

# Grab the <table id="mini_player"> element
scores = soup.find('table', {'id':'mini_player'})

# Get a list of all the <tr>s in the table, skip the header row
rows = scores.findAll('tr')[1:]

# Helper function to return concatenation of all character data in an element
def parse_string(el):
   text = ''.join(el.findAll(text=True))
   return text.strip()

for row in rows:

   # Get all the text from the <td>s
   data = map(parse_string, row.findAll('td'))

   # Skip the first td, which is an image
   data = data[1:]

   # Do something with the data...
   print data 
Теги:
urllib2

1 ответ

3
Лучший ответ

el.findAll(text=True) возвращает весь текст, содержащийся внутри элемента и его подэлементов. По тексту я имею в виду все, что не внутри тега; поэтому в <b>hello</b> тогда "привет" будет текст, но <b> и </b> не будут.

Таким образом, эта функция объединяет весь текст, найденный под данным элементом, и отбрасывает пробелы спереди и сзади.

Здесь ссылка на документацию findAll: http://www.crummy.com/software/BeautifulSoup/documentation.html#arg-text

  • 0
    используйте backticks для HTML. :)
  • 0
    почему в нем нет «», чтобы открыть текст =? и что делают команды join и strip точно? И почему это должно быть определено как функция, прежде чем она будет применена к данным? Благодарю.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню