作者okeyla (小宝)
看板Python
标题[问题] BeautifulSoup反选择
时间Sun Jul 23 09:50:06 2017
不知BeautifulSoup可否反选择呢?
以下是问题范例...
##################################
HTML2 = """
<table>
<tr>
<td class>a</td>
<td class>b</td>
<td class>c</td>
<td class>d</td>
</tr>
<tr>
<td class>e</td>
<td class>f</td>
<td class>g</td>
<td class>h</td>
</tr>
</table>
<table cellpadding="0">
<tr>
<td class>111</td>
<td class>222</td>
<td class>333</td>
<td class>444</td>
</tr>
<tr>
<td class>555</td>
<td class>666</td>
<td class>777</td>
<td class>888</td>
</tr>
"""
soup2 = BeautifulSoup(HTML2, 'html.parser')
f2 = soup2.select('table[cellpadding!="0"]') #<---关键在此
for div in f2:
row = ''
rows = div.findAll('tr')
for row in rows:
if(row.text.find('td') != False):
print(row.text)
##################################
我想把英文内容个table的td全都取出来,
按如下的形式存到excel当中.
a b c d
e f g h
但怎麽都是取到数字内容的表格.
Is there a hint?
Thanks!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.160.98.32
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1500774608.A.113.html
2F:→ AlaRduTP: select 我不确定,但是可以把 !="0",改成 =None 试试 07/23 12:15
3F:→ AlaRduTP: 看 07/23 12:15
5F:→ okeyla: 头大, 还是不成功... 07/23 15:13
6F:推 LessonWang: 既然select方法无法奏效 07/23 15:48
7F:→ LessonWang: 那你可以使用find_all方法xd 07/23 15:48
8F:→ LessonWang: 毕竟bs4不支援css的not选择器 07/23 15:48
9F:→ LessonWang: 只好转个弯吧 07/23 15:48
11F:→ Sunal: 如果你会jQuery的话可以试试 pyquery 已打算抛弃bs惹 07/23 19:00
12F:→ AlaRduTP: soup.find_all('table', attrs={'cellpadding': None}) 07/23 19:09
13F:→ AlaRduTP: 或者用 soup.find() 就可以惹 07/23 19:11