Я пытаюсь получить информацию из файла html, просматривая все строки, начиная с td
, а затем разбивая строки, чтобы получить только нужные мне строки со следующим кодом:
def scraper(filename):
soup = BeautifulSoup(open(filename), 'html.parser')
with open("test/"+filename.stem+".txt", "w") as outfile:
search = soup.findAll('td')
for tag in search:
if re.search(r'regbutton|rgba|mibig', str(tag)):
if re.search('regbutton', str(tag)):
outfile.write(str(tag.split()[2]) + '\n')
if re.search('rgba', str(tag)):
outfile.write(str(tag.split()[17]) + '\n')
if re.search('mibig', str(tag)):
outfile.write(str(re.findall('>(.+)<')) + '\n')
Но это приводит к этой ошибке:
Traceback (most recent call last):
File "html_scrape.py", line 31, in <module>
scraper(filename)
File "html_scrape.py", line 23, in scraper
outfile.write(str(tag.split()[2]) + '\n')
TypeError: 'NoneType' object is not callable
(antismash_v5) [lamma@fe1 actinobacteria]$
Мне дано понять, что это связано с тем, что я предполагаю, что в tag.split
что-то нет, но я не знаю почему.
Редактировать:
Пример вывода результатов поиска по тегу td
:
<td class="regbutton NRPS r2c1">
<a href="#r2c1">Region&nbsp2.1</a>
</td>
<td><a class="external-link" href="https://mibig.secondarymetabolites.org/go/BGC0000324/1" target="_blank">coelibactin</a></td>
<td class="digits similarity-text" style="background-image: linear-gradient(to left, rgba(0, 100, 0, 0.3), rgba(0, 100, 0, 0.3) 100%, #ffffff00 100%)">100%</td>
Весь файл будет просто повторением этого с разными найденными вещами.