|
问题描述:我尝试用BeautifulSoup读取如下表格(去掉了表头)的数据:- <blockquote><tbody id="cqssc_draw_list_tbody">
复制代码 代码:代码里只用了BeautifulSoup的contents方法(鄙人小白),和上面的
- #读取表格里面每一条td记录
- soup = BeautifulSoup(doc,'lxml')
- td = soup.find_all('td')
- #新建列表
- itemList = []
- #for循环尝试抽取每条td记录中的id,开奖号,十位,个位,后三
- #for循环
- for each_line in td:
- try:
- #id
- idNumber = each_line.contents[0].contents[0]
- #开奖号
- lotteryNumber = each_line.contents[1].contents[0].contents[0].split(" ")
- #十位
- tens = each_line.contents[1].contents[1].contents[0].contents[0] + td[0].contents[1].contents[1].contents[1]
- #个位
- units = each_line.contents[1].contents[2].contents[0] + td[0].contents[1].contents[2].contents[1].contents[0]
- #后三
- lastThree = each_line.contents[1].contents[3].contents[0]
- #每条td记录构成一个列表
- item = [idNumber, lotteryNumber, tens, units, lastThree]
- #全体td构成的列表
- itemList.append(item)
- except ValueError:
- pass
- print itemList[4]
复制代码
输出:
- Traceback (most recent call last):
- File "C:/Users/Administrator/PycharmProjects/shishicai/tbodyShishicai.py", line 16, in <module>
- tens = each_line.contents[1].contents[1].contents[0].contents[0] + td[0].contents[1].contents[1].contents[1]
- File "C:\Users\Administrator\Anaconda2\lib\site-packages\bs4\element.py", line 713, in __getattr__
- self.__class__.__name__, attr))
- AttributeError: 'NavigableString' object has no attribute 'contents'
- Process finished with exit code 1
复制代码
错误描述:
我的代码里面使用的contents方法实际上是暴力地遍历html树的每条td记录,但是记录的NavigableString可操作字符串和tag标签相对位置不一样,所以for循环有时候取得到tag标签的contents,有时候取得是NavigableString的contents,但是NavigableString没有contents成员,所以报错了。
求解决:我就是想知道能怎么把这个表格里的所以数据都抽取出来,最后形成一个矩阵,(如下所示)先谢谢各位版主,各位大神!
预期的矩阵数据
|
|