免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6696 | 回复: 8
打印 上一主题 下一主题

关于BeautifulSoup抓取表格及SAE数据库导入的问题(跪求大神帮忙) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-26 19:26 |只看该作者 |倒序浏览
我想在新浪财经上用BeautifulSoup抓取资产负债表具体数值,然后将数据导入到SAE的数据库该怎么做?
PS:我遇到的主要问题是BeautifulSoup抓取出现中文乱码,以及表格数值不知道如何进行有效抓取(用re还是BeautifulSoup里面的语言),
比如<tr><td style='padding-left:30px' width='150px'><a target='_blank' href='/corp/view/vFD_FinanceSummaryHistory.php?stockid=002024&type=cbsheet1'>货币资金</a></td><td style='text-align:right;'>24,804,000,000.00</td><td style='text-align:right;'>30,067,400,000.00</td><td style='text-align:right;'>25,474,400,000.00</td><td style='text-align:right;'>19,661,600,000.00</td><td style='text-align:right;'>20,548,900,000.00</td></tr>
还有就是赋值之后如何将它导入到SAE数据库,比如hbzj(货币资金)=20,548,900,000.00,
然后怎样把它导入到SAE自带的mySQL里面

论坛徽章:
0
2 [报告]
发表于 2013-05-27 09:51 |只看该作者
1.用BeautifulSoup,出现乱码,那估计是你没有指定对应的编码
解决办法:
调用的时候,加上fromEncoding参数,指定html的编码即可,比如:
  1. soup = BeautifulSoup(respHtml, fromEncoding="GBK");
复制代码
其中:
(1)关于BeautifulSoup的其他注意事项可参考:
【总结】Python的第三方库BeautifulSoup的使用心得
(2)关于html的charset,不了解的话,去看:
【整理】关于HTML网页源码的字符编码(charset)格式(GB2312,GBK,UTF-8,ISO8859-1等)的解释
(3)关于编码本身,不了解的话,去看:
字符编码详解

2.“用re还是BeautifulSoup里面的语言”
都可以。
具体解释参见:
【整理】关于用正则表达式处理html代码方面的建议
此处,建议用BeautifulSoup。

3.“如何进行有效抓取”
参考:
【教程】Python中第三方的用于解析HTML的库:BeautifulSoup
里面有极其详尽的解释。

4.“赋值之后如何将它导入到SAE数据库,比如hbzj(货币资金)=20,548,900,000.00,”
此处,你得到的:
20,548,900,000.00
实际上只是个字符串
需要你自己将其转换为对应的float类型的值

5.关于mysql的操作,可参考:
【记录】使用Python操作MySQL数据库
【记录】为Python安装MySQL数据库模块:MySQLdb

论坛徽章:
0
3 [报告]
发表于 2013-05-27 18:17 |只看该作者
crifan大神,初学Python能遇到你这样的老师真是太幸运了,非常感谢您,我会好好看您介绍的相关知识的!!!
   

论坛徽章:
0
4 [报告]
发表于 2013-05-27 22:29 |只看该作者
回复 3# gdp8899


    那这些内容你可以看看:
先是:
python初级教程:入门详解
再是:
python中级教程:开发总结

论坛徽章:
0
5 [报告]
发表于 2013-05-28 12:17 |只看该作者
回复 4# crifan
嗯嗯,好的,非常感谢


   

论坛徽章:
0
6 [报告]
发表于 2013-05-28 16:51 |只看该作者
回复 4# crifan
crifan大神,我无论如何改变编码也是乱码,见图,希望大神能抽空解答小弟的疑惑~

import re,urllib2
from BeautifulSoup import BeautifulSoup
from urllib import urlopen
doc=urllib2.urlopen("http://www.w3school.com.cn/html/html_tables.asp")
soup = BeautifulSoup(doc,fromEncoding="GB2312")这里怎么改也没用
a=soup.findAll("td")
print a





   

QQ图片20130528163929.jpg (75.6 KB, 下载次数: 17)

QQ图片20130528163929.jpg

论坛徽章:
0
7 [报告]
发表于 2013-05-29 00:24 |只看该作者
先转码嘛:

try:
   doc2 = doc.decode("utf8").encode('gbk','ignore')
except:
  doc2  =  doc

然后再处理

论坛徽章:
0
8 [报告]
发表于 2013-05-30 23:33 |只看该作者
本帖最后由 crifan 于 2013-05-30 23:34 编辑

回复 6# gdp8899

简答:
引用我后面帖子里的:
表面上看起来从BeautifulSoup解析后得到的soup,打印出来是乱码,但是实际上其本身已经是,正确的(从原始的GB2312编码)解析(为Unicode)后的了。
之所以乱码,那是因为,打印soup时,调用的是__str__,其默认是UTF-8,所以输出到GBK的cmd中,才显示是乱码。


详解:
足够深度的,极其详细的,刨根问题的,解答:
【已解决】BeautifulSoup已经获得了Unicode的Soup但是print出来却是乱码

论坛徽章:
0
9 [报告]
发表于 2013-06-05 08:43 |只看该作者
回复 8# crifan
嗯嗯,后来我们老师也叫我这样试一下,结果print出来的的确已经是正确的了,谢谢crifan大神了


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP