1
私はBeautifulsoupを使ってテーブル要素を変更しています。具体的には、tbodyとtd要素にクラスを追加しています。これはうまく動作しますが、最初に一致する要素に対してのみ有効です。私はページ上の一致する要素の残りの部分を反復処理する方法を理解できません。BeautifulSoup - すべてのHTMLページを反復してクラスに追加する方法
soup = BeautifulSoup(combine_html, "html.parser")
soup.find('tbody')['class'] = 'list'
soup.find('td')['class'] = 'fuzzy'
soup
次の変更が起こる
<tbody> changes to <tbody class="list">
The first <td> changes to <td class="fuzzy">
~~~更新~~~
私は多分私は私の質問が正しいと掲載されていない、任意の入力が届きませんタグ、または答えが単純なので、誰も投稿されていません。
私はこれを得ることができました - しかし、実際には醜いです。以下のコードを参照してください。
import csv
import pandas as pd
# import numpy as np
from bs4 import BeautifulSoup, Tag, NavigableString
# Select columns from csv file
csv_columns = ['Email', 'Recipient Name', 'Department', 'Clicked Link?']
# Set input csv file to read from nd specify columns using csv_columns variable
df = pd.read_csv('camp1_beneficiary_fullcsv.csv', skipinitialspace=True, usecols=csv_columns)
# Set the HTML header
# Set Bootstrap CSS
# Set CSS location for list.min.js Javascript - mainly the list class
# Set div id for list.min.js
html_header="""
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="def.css">
<div id="users">
<input class="search" placeholder="Search" />
<button class="sort" data-sort="em">
Sort by name
</button>
"""
# Set HTML 'footer'
# Specify list.min.js external javascript file and code
html_footer ="""
<script src="list.min.js"></script>
<script>
var options = {
valueNames: [ 'fuzzy' ]
};
var userList = new List('users', options);
</script>
"""
# Generate HTML body using df.to_html from Pandas
html_body = df.to_html(classes=["table-bordered", "table-striped", "table-hover"])
# Combine html header, body, and footer into variable
combine_html = (html_header + html_body + html_footer)
# Find elements in HTML and add classes to support javascript classes for filtering
soup = BeautifulSoup(combine_html, "html.parser")
soup.find('tbody')['class'] = 'list'
soup
f = open('test.html','w')
f.write(str(soup))
f.close()
f = open('test.html', 'r')
filedata = f.read()
f.close()
newdata = filedata.replace("<td>", "<td class='fuzzy'>")
f = open('final.html', 'w')
f.write(newdata)
f.close()
これは素晴らしい機能でした。ありがとうございました! – KingGlockr
いつでも!それがうまくいった – Shaunak