标题: [问题求助] 【已解决】beautifulsoup肿么用 [打印本页]
作者: 949825667@qq.co 时间: 2016-8-25 10:08 标题: 【已解决】beautifulsoup肿么用
本帖最后由 949825667@qq.co 于 2016-8-30 16:44 编辑
- import urllib.request
-
- import bs4
- import re
-
-
- def trans(f):
- searchUrl = "http://dict.youdao.com/search?q=" + f + "&keyfrom=dict.index"
- web = urllib.request.urlopen(searchUrl)
- soup = bs4.BeautifulSoup(web, "html.parser")
- homegrids = soup.find(id='wordGroup')
- a = homegrids.find_all('a')
- for i in a:
- print(i.string)
- def main():
- f = input('')
- trans(f)
-
- if __name__ == '__main__':
- main()
复制代码
<div id="wordGroup" class="trans-container tab-content hide more-collapse">
<p class="wordGroup">
<span class="contentTitle"><a class="search-js" href="/w/eng/look_like/#keyfrom=dict.basic.wordgroup">look like</a></span>
看起来像…
</p>
<p class="wordGroup">
<span class="contentTitle"><a class="search-js" href="/w/eng/feel_like/#keyfrom=dict.basic.wordgroup">feel like</a></span>
想要;感到好似
</p>
<p class="wordGroup">
<span class="contentTitle"><a class="search-js" href="/w/eng/something_like/#keyfrom=dict.basic.wordgroup">something like</a></span>
有点像;大约;差不多
</p>
<p class="wordGroup">
<span class="contentTitle"><a class="search-js" href="/w/eng/if_you_like/#keyfrom=dict.basic.wordgroup">if you like</a></span>
如果你愿意;如果你喜欢的话
</p>
<p class="wordGroup">
<span class="contentTitle"><a class="search-js" href="/w/eng/nothing_like/#keyfrom=dict.basic.wordgroup">nothing like</a></span>
没有什么能比得上;一点也不象
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/anything_like/#keyfrom=dict.basic.wordgroup">anything like</a></span>
多少有点像
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_as/#keyfrom=dict.basic.wordgroup">like as</a></span>
[方言]如同,正如
<a href="javascript:void(0);"class="century21" title="来源于21世纪大英汉词典"> </a>
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_a_dream/#keyfrom=dict.basic.wordgroup">like a dream</a></span>
毫不费力地;轻而易举地;完美地
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_anything/#keyfrom=dict.basic.wordgroup">like anything</a></span>
[口]拼命地;非常猛地;全力地;象什么似的
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/such_like/#keyfrom=dict.basic.wordgroup">such like</a></span>
像这类的
<a href="javascript:void(0);"class="century21" title="来源于21世纪大英汉词典"> </a>
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_to_do/#keyfrom=dict.basic.wordgroup">like to do</a></span>
喜欢做某事(特指某一次)
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_crazy/#keyfrom=dict.basic.wordgroup">like crazy</a></span>
拼命地;[口]发疯似的
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_what/#keyfrom=dict.basic.wordgroup">like what</a></span>
举个例子吧;比如说
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_mad/#keyfrom=dict.basic.wordgroup">like mad</a></span>
[口]疯狂地;猛然地;极度地
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_it_or_not/#keyfrom=dict.basic.wordgroup">like it or not</a></span>
不管你喜欢不喜欢
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_hell/#keyfrom=dict.basic.wordgroup">like hell</a></span>
拼命地
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/likes_and_dislikes/#keyfrom=dict.basic.wordgroup">likes and dislikes</a></span>
好恶;喜欢与厌恶
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/make_like/#keyfrom=dict.basic.wordgroup">make like</a></span>
[美俚]模仿;扮演
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/or_the_like/#keyfrom=dict.basic.wordgroup">or the like</a></span>
诸如此类
</p>
<p class="wordGroup collapse">
<span class="contentTitle"><a class="search-js" href="/w/eng/like_nothing_on_earth/#keyfrom=dict.basic.wordgroup">like nothing on earth</a></span>
世间罕有的
,
◎世上罕见的,奇怪得很的
,
◎难看极了;糟透了;难过极了
<a href="javascript:void(0);"class="century21" title="来源于21世纪大英汉词典"> </a>
</p>
研究了半天beautifulsoup只能把标签a里面的词组取出来,汉语解释肿么取!
作者: 949825667@qq.co 时间: 2016-8-25 10:20
本帖最后由 949825667@qq.co 于 2016-8-25 10:23 编辑
自己用正则匹配了一下,没有得到完美的效果,有木有更好的正则匹配
我这个写法会连<a href="javascript:void(0);"class="century21" title="来源于21世纪大英汉词典"> </a>也匹配到- import urllib.request
-
- import bs4
- import re
-
-
- def trans(f):
- searchUrl = "http://dict.youdao.com/search?q=" + f + "&keyfrom=dict.index"
- web = urllib.request.urlopen(searchUrl)
- soup = bs4.BeautifulSoup(web, "html.parser")
- homegrids = soup.find(id='wordGroup')
- a = homegrids.find_all('a')
- print(homegrids.find_all('a'))
- for i in a:
- print(i.string)
- for j in homegrids:
- results = re.findall(r'.*</span>(.*)</p>', str(j), re.S)
- #print(str(j))
- for result in results:
- print(result)
- def main():
- f = input('')
- trans(f)
-
- if __name__ == '__main__':
- main()
复制代码
作者: wskwfkbdn 时间: 2016-8-25 10:20
因为这个是utf-8编码的
作者: 949825667@qq.co 时间: 2016-8-25 10:34
脑袋笨,学得慢!
作者: 523066680 时间: 2016-8-25 11:01
本帖最后由 523066680 于 2016-8-25 11:02 编辑
楼主毅然放弃Perl 转战Python 这真是一个明智的举动
楼主觉得自己笨,那得看前面对计算机了解多少呀,几年级了?
作者: 949825667@qq.co 时间: 2016-8-25 11:03
回复 5# 523066680
:'(
作者: 949825667@qq.co 时间: 2016-8-25 11:03
回复 5# 523066680
各种语言都不懂!
作者: 949825667@qq.co 时间: 2016-8-25 11:05
应该去上什么零基础三十天就牛逼的课程:lol
作者: 523066680 时间: 2016-8-25 11:05
本帖最后由 523066680 于 2016-8-25 11:08 编辑
回复 7# 949825667@qq.co
简单的回答不要分两个帖啦,尽量一起回答。
几年级?如果在上大学或者高中,主修什么方向的?
如果已经工作了,从事哪方面?
你可以看看 《七天七语言》 《七周七并发模型》 。。。。。
XX语言从入门到弃坑、从入门到颈椎病 系列
作者: 949825667@qq.co 时间: 2016-8-25 11:08
回复 9# 523066680
刚毕业,其实是个老师!想从事数据下载和分析的工作
作者: happy886rr 时间: 2016-8-25 11:11
回复 10# 949825667@qq.co
当老师真好,地位也高,你真想做程序员?
作者: 523066680 时间: 2016-8-25 11:12
回复 10# 949825667@qq.co
尼玛,原来是数据挖掘专家,据说工资灰常高。
有个R语言好像适合数据可视化。
什么科目的老师……
作者: 949825667@qq.co 时间: 2016-8-25 11:13
回复 11# happy886rr
当老师不考编制没意思!工资也不高!至于地位没感觉,我一个刚毕业的!
作者: 949825667@qq.co 时间: 2016-8-25 11:14
回复 12# 523066680
偏离话题了,不如帮我想想怎么把词组和意思提取出来,最好打印成并排的两列
作者: happy886rr 时间: 2016-8-25 11:20
回复 13# 949825667@qq.co
考编制又不难,就是个教育学,专业课,还有你教师资格证考下没
作者: 949825667@qq.co 时间: 2016-8-25 11:22
回复 15# happy886rr
师范专业的,必须有!主要不喜欢当老师!
作者: 523066680 时间: 2016-8-25 11:42
回复 14# 949825667@qq.co
我帮你想你又不给我小费。坐等大神
作者: 949825667@qq.co 时间: 2016-8-25 12:01
回复 17# 523066680
我也是自己学着玩,也没人给我工资!
作者: 523066680 时间: 2016-8-25 12:09
回复 18# 949825667@qq.co
所以你现在要做正则匹配?这个问题非常基础。如果你有python电子书/纸质书,看正则部分就知道了。
Chinaunix有很多帖子可以参考。
作者: codegay 时间: 2016-8-25 12:24
正则需要多练习就好多了。
用了bs的话,可以用xpath,不过我也还没学会。
举个例子吧,你需要提取的是什么内容?
作者: 949825667@qq.co 时间: 2016-8-25 12:40
回复 20# codegay
大概就是这样,不过我也不急了,毕竟才看了Python两三天!很多东西都不了解
look like 看起来像
feel like 感到好似
作者: codegay 时间: 2016-8-25 13:20
回复 21# 949825667@qq.co
基础的东西还是要懂的。可以找本python基础教程看一遍。
作者: 949825667@qq.co 时间: 2016-8-25 13:27
回复 22# codegay
好!
作者: pcl_test 时间: 2016-8-25 16:24
本帖最后由 pcl_test 于 2017-5-26 21:27 编辑
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/- # encoding: utf-8
- # Python 3.6.0
- import requests
- from bs4 import BeautifulSoup
-
- def trans(str):
- html=requests.post("http://dict.youdao.com/search?q="+str).content
- text=str+'\r\n'
- if html:
- soup = BeautifulSoup(html,"html.parser")
- container = soup.find("div", attrs={"class": "trans-container"})
- lis = container.find_all('li')
- authDictTrans = lis[0].find_all("span", attrs={"class": "def"})
- if authDictTrans:
- for span in authDictTrans:
- text+=span.string+'\r\n'
- else:
- for li in lis:
- text+=li.string+'\r\n'
- return text
-
- str='look like,feel like,something like,if you like,nothing like,anything like,like as,like a dream,like anything,such like,like to do,like crazy,like what,like mad,like it or not,like hell,likes and dislikes,make like,or the like,like nothing on earth'
- for kw in str.split(','):
- print(trans(kw))
复制代码
作者: codegay 时间: 2016-8-26 06:10
本帖最后由 codegay 于 2016-8-26 07:21 编辑
我懒得扒网页,所以查了一下,这类服务是有API可以用的。我懒得自己申请了,就用了别人的。
比如金山词霸也是同样有API可以用的。实现同样的功能代码量会很少。- #代码一 只使用python3标准库,需要自己指定decode并把str loads成python对象
- import urllib.request
- import json
-
- apiurl = 'http://fanyi.youdao.com/openapi.do?keyfrom=k772933230&key=1494307&type=data&doctype=json&version=1.1&q={input}'
- #apiurl = 'http://fanyi.youdao.com/openapi.do?keyfrom=mypydict&doctype=json&q={input}&version=1.1&key=27855339&type=data'
- #apiurl = 'http://fanyi.youdao.com/fanyiapi.do?keyfrom=youkulabs&key=158194127&type=data&doctype=json&version=1.1&q={input}'
- #以上三个有道API 是在网上看到的。目前都是可以直接使用的。
- #申请自己的API 以及用法,请看这里 http://fanyi.youdao.com/openapi?path=data-mode
-
- req = urllib.request.urlopen
- raw = req(apiurl.format(input="python")).read()
-
- #print(raw.decode("utf8"))
- #print(type(raw.decode("utf8"))) # => str
-
- result=json.loads(raw.decode("utf8"))
-
- for r in result["basic"]["explains"]:
- print(r)
-
-
- #代码二 使用第三方库 requests ,用起来会感觉很方便,自动会根据网页头解码并且把json转成python对象。
- import requests
-
- txt = requests.get(apiurl.format(input="driver")).json()
-
- for r in txt["basic"]["explains"]:
- print(r)
-
- """
- #输出结果:
- n. 巨蟒;大蟒
- n. (法)皮东(人名)
- n. 驾驶员;驱动程序;起子;传动器
- n. (Driver)人名;(德)德里弗;(英)德赖弗
- """
复制代码
作者: happy886rr 时间: 2016-8-26 08:55
回复 25# codegay
棒,你的方法二5行代码就解决了字典查询。
作者: 949825667@qq.co 时间: 2016-8-26 09:29
回复 25# codegay
你说的这些我早就实现了,我是想要获取更多的数据,比如词组短语,例句,有道翻译的api我用过了!只有简单的单词释义
作者: 523066680 时间: 2016-8-26 09:31
本帖最后由 523066680 于 2016-8-26 09:39 编辑
回复 26# happy886rr
辣也还是在线的,还是离线利索。
作者: 949825667@qq.co 时间: 2016-8-26 09:32
回复 25# codegay
仔细看了一下,很多可以借鉴的!多谢多谢
作者: 949825667@qq.co 时间: 2016-8-26 09:33
回复 24# pcl_test
多谢版主回复,可能我没表达清楚,所以这个代码并不能实现我要的效果,我想我还是自己琢磨吧!再有困难再来请教大家!
作者: 523066680 时间: 2016-8-26 09:36
本帖最后由 523066680 于 2016-8-26 09:37 编辑
回复 30# 949825667@qq.co
人家授之以渔,页面都给你了,你却只想要个结果。可见…… 不说了
作者: 949825667@qq.co 时间: 2016-8-26 09:39
回复 31# 523066680
我哪里想要结果了?我再论坛提问不少次了,大多都是看看别人的东西,自己想到了。哪里看到我想要结果了?有启发对我更重要。我又不是拿着结果交差的,我要结果干嘛?
作者: 949825667@qq.co 时间: 2016-8-26 09:40
回复 31# 523066680
他确实交给我方法了,但是这个方法我知道了,我就说一声我知道了。然后我自己再琢磨,没有说非要别人给个结果吧!你这么污蔑我,我以后怎么玩?
作者: 523066680 时间: 2016-8-26 09:46
学习能力弱了点,继续努力吧
作者: 949825667@qq.co 时间: 2016-8-26 09:47
回复 34# 523066680
大哥,你看我第一页,我给出的代码,其实已经基本实现我的要求了,我就是问了一句有木有更好的正则匹配!最后落得这样的说法,好难过!
作者: 523066680 时间: 2016-8-26 09:49
回复 35# 949825667@qq.co
我就是说你的正则匹配还是没搞定,哈哈
作者: 949825667@qq.co 时间: 2016-8-26 09:49
总被人认为伸手的,我都是查了好久都木有办法,才问的!而且大多都还是自己解决问题的!以后看看有木有氛围更好的论坛吧!这个先逛着!
作者: 949825667@qq.co 时间: 2016-8-26 09:51
回复 37# 523066680
那个我一直没有去想啊,我又不是不干活天天学的!躺着吃白饭啊!一天抽一点时间看看!以后尽量自己解决问题吧,没人教真累!
作者: 949825667@qq.co 时间: 2016-8-26 09:52
有空再来看看,搬砖去了!
作者: 523066680 时间: 2016-8-26 09:55
回复 38# 949825667@qq.co
自己动手丰衣足食
作者: codegay 时间: 2016-8-26 09:57
回复 27# 949825667@qq.co
下次提问,请在帖子里一次性说清楚你要干嘛。
作者: 949825667@qq.co 时间: 2016-8-26 10:11
回复 41# codegay
其实第一页很清楚了!你们没看而已!
作者: 523066680 时间: 2016-8-26 11:21
楼主生气了 你去chinaunix试试吧
作者: happy886rr 时间: 2016-8-26 11:28
回复 28# 523066680
离线的好像你以前有篇文章写得很不错。
作者: 523066680 时间: 2016-8-26 11:44
回复 44# happy886rr
自己用着还行,现在查词基本在终端,手感利索。
汉英字典(CE)提取脚本
CE.pl
有道拆过了,有点收集癖的心态,又去试了灵格斯,结果人家说是DES加密,搞了很久,好像还用了压缩算法,知识不够用了。
“看雪”上面有人贴出了灵格斯字典加密解密逆向的代码(里面好像没有DES有关的东西…… 懵了)
[看雪论坛]灵格斯词典格式逆向
另一个分析:
灵格斯LDX,LD2等格式分析
两个现成的项目,可以直接导明文
https://github.com/librehat/kdictionary-lingoes
https://github.com/windylea/lingoes-converter
You can just download a binary distribution for Windows here and run it:
http://tiny.cc/lingoes-converter
顺便发一个DES源码
作者: pcl_test 时间: 2016-8-26 11:56
回复 30# 949825667@qq.co
look like
feel like
like nothing on earth
这三个短语,你希望得到的结果是什么?
作者: 949825667@qq.co 时间: 2016-8-26 13:15
回复 46# pcl_test
第一页的代码相信版主大人看到了吧!就是输入一个单词,获取html,从html里面解析到词组短语部分!最后表现出来的应该是
look like 看起来像
feel like 想要
这种并列的两列
作者: 949825667@qq.co 时间: 2016-8-26 13:21
回复 46# pcl_test
但是我处理不干净,所以我输出的结果是这样的,有一行<a class="century21" href="javascript:void(0);" title="来源于21世纪大英汉词典"> </a>我去不掉
没有什么能比得上;一点也不象
多少有点像
[方言]如同,正如
<a class="century21" href="javascript:void(0);" title="来源于21世纪大英汉词典"> </a>
毫不费力地;轻而易举地;完美地
[口]拼命地;非常猛地;全力地;象什么似的
像这类的
<a class="century21" href="javascript:void(0);" title="来源于21世纪大英汉词典"> </a>
喜欢做某事(特指某一次)
拼命地;[口]发疯似的
举个例子吧;比如说
作者: pcl_test 时间: 2016-8-26 13:50
回复 47# 949825667@qq.co
那么24楼显示的结果哪里不符合,除了手动输入、输出格式外
作者: 949825667@qq.co 时间: 2016-8-26 13:55
回复 49# pcl_test
我错了,我昨晚在家测试的时候是错误的!对不起斑竹大人的帮助了!你的代码方便有效!
作者: 949825667@qq.co 时间: 2016-8-26 13:57
回复 50# 949825667@qq.co
我原意是输入一个单词,获取到这个单词页面的短语,不是直接输入短语查询,不过版主给了我启发,我去试试了!哈哈哈哈!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |