从联机词典的源代码TypeError创建文本文件:POST数据应该是字节或字节的iterable。它不能是s类型

2024-06-12 00:08:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的论坛,但我已经到处搜索,找不到任何人试图创建一个类似的程序作为我的。你知道吗

基本上,我想(最终)用法语输入一个单词,把它加在“http:/www.wordreference.com/fren/“(wordreference是一个在线词典),不知何故,可能是使用网站的源代码,把这个词的译文和原文一起插入到文本文档中。你知道吗

例如,输入“heureux”将产生“happy”,这是网站上列出的第一个翻译。然而,我还没有深入到这个过程中;我只停留在一些简单的事情上——访问源代码。我发现对于每个字典条目,wordreference都以“td class='ToWrd'”开始源代码。所以,我的逻辑是在源代码中找到它的第一个实例,并将其添加到文本文档中。你知道吗

不幸的是,结合使用BeautifulSoup方法和urlopen容量,我没有成功地通过第一步。你知道吗

这是我的密码:

import bs4
from bs4 import BeautifulSoup
from urllib.request import urlopen

url = urlopen("http://www.wordreference.com/fren/lame","lxml" )
content = url.read()
soup = BeautifulSoup(content)
links = soup.findAll("td class='ToWrd'")

我刚得到:“TypeError: POST data should be bytes or an iterable of bytes. It cannot be of type str.” 这个任务很复杂,但你能给我什么建议吗?我真的很感激。我是python的新手,但我为解决这个问题付出了很多努力。非常感谢你。你知道吗

另外,我正在Ubuntu 16.04上通过PyCharm使用python3.5。你知道吗


Tags: importcomhttp源代码网站www文本文档class
1条回答
网友
1楼 · 发布于 2024-06-12 00:08:07

正如urllib文档中建议的那样,您应该使用HTTP的requests库。你知道吗

另请参阅使用findall的语法。如果你只想保留第一个译文,你就得把结果缩小一点。你知道吗

from bs4 import BeautifulSoup
import requests

url = "http://www.wordreference.com/fren/lame"
content = requests.get(url).content
soup = BeautifulSoup(content, "html5lib")
links = soup.findAll("td", { "class" : "ToWrd"})
print(links)

# [<td class="ToWrd">Anglais</td>, <td class="ToWrd">blade <em class="tooltip POS2">n<span><i>noun</i>: Refers to person, place, thing, quality, etc. </span></em></td>, ... ]

相关问题 更多 >