I'm currently using beautifulsoup to scrape a table on a site, this table includes links, I am then converting this table into a pandas dataframe and converting it to html using pandas 'to_html' option, this is all running in Django.
This is how I'm creating the table in Python:
res = []
for row in table.find_all('tr'):
row_data = []
for td in row.find_all('td'):
td_check = td.find('a')
if td_check is not None:
link = td.find('a')
row_data.append(link)
else:
not_link = ''.join(td.stripped_strings)
if not_link == '':
not_link = None
row_data.append(not_link)
res.append(row_data)
I then convert it to HTML using this:
sangerDF = sangerDF.to_html(classes=["table-bordered", "table-striped", "table-hover",], index=False, justify="initial")
But it outputs the table on my site like this:
I don't understand why it isn't clickable? If I inspect a cell in the table using my browser the HTML is:
<td>
<a href="https://www.sanger.ac.uk/htgt/wge/crispr/1006029202">1006029202</a>
</td>
So something is going wrong with the formatting somewhere, how would I fix this?
Thanks!
I figured it out, to my 'to_html' I had to add 'escape=False' in brackets at the end.
so my code before:
sangerDF = sangerDF.to_html(classes=["table-bordered", "table-striped", "table-hover",], index=False, justify="initial")
and after:
sangerDF = sangerDF.to_html(classes=["table-bordered", "table-striped", "table-hover",], index=False, justify="initial", escape=False)
Hope this helps.