Search code examples
pythonbeautifulsouphtml-parsinggigya

beautiful soup re-parse a returned set of table rows beautiful soup


I'm trying to parse a second set of data. I make a get request to gigya status page, I parse out the part that is important with beautiful soup. Then I take the return string of html trying to parse that with beautiful soup as well but I get a markup error however the returned content string is a string as well so im not sure why..

error

Traceback (most recent call last):
  File "C:\Users\Administraor\workspace\ChronoTrack\get_gigiya.py", line 17, in <module>
    soup2 = BeautifulSoup(rows)
  File "C:\Python27\lib\site-packages\bs4\__init__.py", line 161, in __init__
    markup = markup.read()
TypeError: 'NoneType' object is not callable

code

import requests
import sys
from bs4 import BeautifulSoup
url = ('https://console.gigya.com/site/apiStatus/getTable.ashx')
r = requests.request('GET', url)
content = str(r.content)

soup = BeautifulSoup(content)
table = soup.findAll('table')
rows = soup.findAll('tr')

rows = rows[8]
soup2 = BeautifulSoup(rows) #this is where it fails
items = soup2.findAll('td')
print items

Solution

  • The line soup2 = BeautifulSoup(rows) is unnecessary; rows at that point is already a BeautifulSoup.Tag object. You can simply do:

    rows = rows[8]
    items = rows.findAll('td')