免费注册 查看新帖 |

Chinaunix

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

[已经解决]写了一个用beautiful soup抓iciba.com 单词意思的脚本,但是输出不对 [复制链接]

论坛徽章:
13
CU大牛徽章
日期:2013-03-14 14:14:082016科比退役纪念章
日期:2016-07-22 11:15:35数据库技术版块每日发帖之星
日期:2016-05-27 06:20:002015亚冠之吉达阿赫利
日期:2015-08-05 10:06:542015年亚洲杯之韩国
日期:2015-04-01 16:05:42双鱼座
日期:2014-11-13 11:04:24丑牛
日期:2014-07-25 17:29:54子鼠
日期:2014-04-25 12:25:45丑牛
日期:2014-04-17 08:35:48巨蟹座
日期:2014-04-16 16:50:05CU大牛徽章
日期:2013-03-14 14:14:29CU大牛徽章
日期:2013-03-14 14:14:26
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-20 16:29 |只看该作者 |倒序浏览
本帖最后由 hmchzb19 于 2014-10-21 11:16 编辑
  1. import urllib
  2. import urllib2
  3. import string
  4. import sys
  5. from bs4 import BeautifulSoup
  6. data=sys.argv[1]
  7. #response = urllib2.urlopen("http://iciba.com/"+"data")
  8. 问题在这里,下面的就对了
  9. response = urllib2.urlopen("http://iciba.com/"+data)

  10. the_page = response.read()
  11. pool = BeautifulSoup(the_page)
  12. results1 = pool.find('div',attrs={'class':'group_pos'}).findAll('label')
  13. results2 = pool.find('div',attrs={'class':'net_paraphrase'}).find('ul').findAll('li')
  14. answer=''
  15. net_ans=''
  16. for result1 in results1:
  17.     answer+=result1.getText()
  18. for result2 in results2:
  19.     net_ans+=result2.getText()
  20. print "the meaning of %s is \n %s \n %s" %(sys.argv[1],answer,net_ans)
复制代码
./get_iciba.py  query
the meaning of query is
资料,材料;datum的复数;[计算机]数据,资料;从科学实验中提取的价值
数据;数据的;资料;资料的

最后的结果却是这样,不太明白哪里出问题了,另外page source 如下

                                <div class="group_prons">
                                               
                        <div class="group_pos">
                                                                <p>
                                        <strong class="fl">n.</strong>
                                        <span class="label_list">
                                                                                                                        <label>问题;</label>
                                                                                                                        <label>疑问;</label>
                                                                                                                        <label>询问;</label>
                                                                                                                        <label>问号</label>
                                                                                </span>
                                </p>
                                                                <p>
                                        <strong class="fl">vt.</strong>
                                        <span class="label_list">
                                                                                                                        <label>质疑,对…表示疑问</label>
                                                                                </span>
                                </p>
                                                                <p>
                                        <strong class="fl">vi.</strong>
                                        <span class="label_list">
                                                                                                                        <label>询问;</label>
                                                                                                                        <label>表示怀疑</label>
                                                                                </span>
                                </p>
                                                        </div>
                </div>
                               
                                <div class="net_paraphrase">
                        <a href="###" id="net_means_label" title="网络释义">网 络</a>
                        <ul class="clear">
                                                                                                 <li>查询;</li>
                                                                                                                                 <li>质问;</li>
                                                                                                                                 <li>搜索请求;</li>
                                                                                                                                 <li>询问</li>
                                                                                        </ul>
                </div>

论坛徽章:
0
2 [报告]
发表于 2014-10-21 10:09 |只看该作者
1.最后的结果却是这样
你希望的是哪样?

2.不太明白哪里出问题了
我也没明白你想要什么。。。

3.源码
拜托先把源码用工具格式化一下,方便看,这样别人才方便帮你分析。。

论坛徽章:
13
CU大牛徽章
日期:2013-03-14 14:14:082016科比退役纪念章
日期:2016-07-22 11:15:35数据库技术版块每日发帖之星
日期:2016-05-27 06:20:002015亚冠之吉达阿赫利
日期:2015-08-05 10:06:542015年亚洲杯之韩国
日期:2015-04-01 16:05:42双鱼座
日期:2014-11-13 11:04:24丑牛
日期:2014-07-25 17:29:54子鼠
日期:2014-04-25 12:25:45丑牛
日期:2014-04-17 08:35:48巨蟹座
日期:2014-04-16 16:50:05CU大牛徽章
日期:2013-03-14 14:14:29CU大牛徽章
日期:2013-03-14 14:14:26
3 [报告]
发表于 2014-10-21 10:45 |只看该作者
1. sys.argv[1]就是我要查的单词。
2. 这个脚本做的就是在iciba.com上查英文单词的意思,然后把结果打印出来而已。
3. 这个网页的源代码我用chrome看到的就比较乱,所以是看起来比较乱。
这是我answer里面要取的内容,就是label里面的text.
代码就是这一句:
results1 = pool.find('div',attrs={'class':'group_pos'}).findAll('label')
  1.                                 <div class="group_prons">
  2.                                                
  3.                         <div class="group_pos">
  4.                                                                 <p>
  5.                                         <strong class="fl">n.</strong>
  6.                                         <span class="label_list">
  7.                                                                                                                         <label>问题;</label>
  8.                                                                                                                         <label>疑问;</label>
  9.                                                                                                                         <label>询问;</label>
  10.                                                                                                                         <label>问号</label>
  11.                                                                                 </span>
  12.                                 </p>
  13.                                                                 <p>
  14.                                         <strong class="fl">vt.</strong>
  15.                                         <span class="label_list">
  16.                                                                                                                         <label>质疑,对…表示疑问</label>
  17.                                                                                 </span>
  18.                                 </p>
  19.                                                                 <p>
  20.                                         <strong class="fl">vi.</strong>
  21.                                         <span class="label_list">
  22.                                                                                                                         <label>询问;</label>
  23.                                                                                                                         <label>表示怀疑</label>
  24.                                                                                 </span>
  25.                                 </p>
  26.                                                         </div>
  27.                 </div>
复制代码
下面是我net_ans要取的内容。对应这一句:
results2 = pool.find('div',attrs={'class':'net_paraphrase'}).find('ul').findAll('li')
  1.                                 <div class="net_paraphrase">
  2.                         <a href="###" id="net_means_label" title="网络释义">网 络</a>
  3.                         <ul class="clear">
  4.                                                                                                  <li>查询;</li>
  5.                                                                                                                                  <li>质问;</li>
  6.                                                                                                                                  <li>搜索请求;</li>
  7.                                                                                                                                  <li>询问</li>
  8.                                                                                         </ul>
  9.                 </div>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP