Python Beautiful Soup解析具有特定ID的表

era*_*tdo 6 python beautifulsoup

我正在尝试从具有特定ID的表中获取数据,我知道.出于某种原因,代码一直给我一个无结果.

从我试图解析的HTML代码:

<table cellspacing="0" cellpadding="3" border="0" id="ctl00_SPWebPartManager1_g_c001c0d9_0cb8_4b0f_b75a_7cc3b6f7d790_ctl00_HistoryData1_gridHistoryData_DataGrid1" style="width:100%;border-collapse:collapse;">
    <tr class="gridHeader" valign="top">
        <td class="titleGridRegNoB" align="center" valign="top"><span dir=RTL>???? ??? (???? ?"?)</span></td>
        <td class="titleGridReg" align="center" valign="top">??? ???? ?????</td>
        <td class="titleGridReg" align="center" valign="top">??? ????</td><td class="titleGridReg" align="center" valign="top">??? ????</td>
        <td class="titleGridReg" align="center" valign="top">??? ????</td>
        <td class="titleGridReg" align="center" valign="top">??? ?????</td><td class="titleGridReg" align="center" valign="top"><span dir="rtl">??? ????? (???????)</span></td>
        <td class="titleGridReg" align="center" valign="top">??? ????? ?????</td><td class="titleGridReg" align="center" valign="top">?????</td>
    </tr>
    <tr onmouseover="this.style.backgroundColor='#FDF1D7'" onmouseout="this.style.backgroundColor='#ffffff'">
Run Code Online (Sandbox Code Playgroud)

... 等等

我的代码:

html = br.response().read()
soup = BeautifulSoup(html)

table = soup.find(lambda tag: tag.name=='table' and tag.has_key('id') and tag['id']=="ctl00_SPWebPartManager1_g_c001c0d9_0cb8_4b0f_b75a_7cc3b6f7d790_ctl00_HistoryData1_gridHistoryData_DataGrid1")
rows = table.findAll(lambda tag: tag.name=='tr')

In [100]: print table
None
Run Code Online (Sandbox Code Playgroud)

aIK*_*Kid 11

文档:

table = soup.find('table', id="ctl00_SPWebPartManager1_g_c001c0d9_0cb8_4b0f_b75a_7cc3b6f7d790_ctl00_HistoryData1_gridHistoryData_DataGrid1")
Run Code Online (Sandbox Code Playgroud)

而对于行行:

rows = table.findAll('tr')
Run Code Online (Sandbox Code Playgroud)

对于编码问题,请尝试从中解码utf-8并重新编码.

html = br.response().read().decode('utf-8')
soup = BeautifulSoup(html.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)