Красивая линия соответствия Супа - PullRequest
0 голосов
/ 24 сентября 2011

Я пытаюсь создать HTML-таблицу, которая содержит только заголовок таблицы и строку, которая имеет отношение к мне.Я использую сайт http://wolk.vlan77.be/~gerben.

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

Что я хочу сделать:

  • получить HTML-страницу
  • Разобрать его, чтобы получить заголовок таблицы
  • Разобрать, чтобы получитьстрока с тегами таблицы, относящимися ко мне (поэтому строка таблицы, содержащая lucas)
  • Создайте html-страницу, которая показывает заголовок и запись таблицы, относящиеся ко мне

Что я делаю сейчас:

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

    def downloadURL (self): глобальный ввод filehandle = self.urllib.urlopen ('http://wolk.vlan77.be/~gerben') input =' 'для строки в filehandle.readlines (): input + = line filehandle.close ()

    def soupParserToTable(self,input):
        global header
    
        soup = self.BeautifulSoup(input)
        header = soup.first('tr')
        tableInput='0'
    
        table = soup.findAll('tr')
        for line in table:
            print line
            print '\n \n'
            if '''lucas''' in line:
                print 'true'
            else:
                print 'false'
            print '\n \n **************** \n \n'
    

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

 **************** 


<tr><td>lucas.vlan77.be</td> <td><span style="color:green;font-weight:bold">V</span></td> <td><span style="color:green;font-weight:bold">V</span></td> <td><span style="color:green;font-weight:bold">V</span></td> </tr>



false

Теперь я не понимаю, почему он не совпадает, там явно указана строка lucas: /?

Ответы [ 2 ]

3 голосов
/ 24 сентября 2011

Похоже, вы слишком усложняете это.

Вот более простая версия ...

>>> import BeautifulSoup
>>> import urllib2
>>> html = urllib2.urlopen('http://wolk.vlan77.be/~gerben')
>>> soup = BeautifulSoup.BeautifulSoup(html)
>>> print soup.find('td', text=lambda data: data.string and 'lucas' in data.string)
lucas.vlan77.be
1 голос
/ 24 сентября 2011

Это потому, что строка - это не строка, а экземпляр BeautifulSoup.Tag.Попробуйте вместо этого получить значение td:

if '''lucas''' in line.td.string:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...