Python 3.7 BeautifullSoup soup.find 错误 - find() 不接受关键字参数

问题描述 投票:0回答:3
python python-3.x beautifulsoup
3个回答
3
投票

在使用

BeautifulSoup
之前,您需要将其转换为
find
对象,否则它会使用
str.find

例如:

soup = BeautifulSoup(response.read(), "html.parser")
product = soup.find("h4", attrs ={"class": "productdescriptionname"})
print (product)

0
投票

我认为这值得一提,如果

find
方法有问题,检查
type(soup)
是一个很好的方法来查明您是否正在使用正确的
bs4.BeautifulSoup
对象而不是
str

我想在这里指出一件事,如果使用

soup.prettify()
使
html
可读。需要注意的是,
.prettify()
bs4.BeautifulSoup
转换为
str
。所以这应该单独使用,例如:

soup = BeautifulSoup(response) # type(soup) --> bs4.BeautifulSoup
print(soup.prettify()) # print readable html

不喜欢:

soup = BeautifulSoup(response).prettify() # type(soup) --> str

我在网上读到的关于这个问题的另一件事是这样的:“你的 beautiful soup 版本可能不支持 find。”因此,我最终升级和降级了版本很多次,然后才意识到这是一个错误的陈述由业余爱好者制作。

在打印之前我已经为此奋斗了大约 45 分钟

type(soup)

。我希望这可以节省其他人的时间。


0
投票
Может кому подойдет история такая повторял за автором ютуба и переписывал код для парсинга и вышла такая же ошибка как в вопросе искал читал, шерстил инет пока не начал перепроверять свой код в общем мой код с ошибкой:

from requests import Session from bs4 import BeautifulSoup as BS from time import sleep headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 YaBrowser/23.11.0.0 Safari/537.36'} work = Session() work.get('https://quotes.toscrape.com/', headers=headers) response = work.get('https://quotes.toscrape.com/login', headers=headers) soup = BS(response.text, 'lxml')
token = soup.find('from').find('input').get('')

в чем здесь ошибка? вот в этой строке token = soup.find('from').find('input').get('') а именно soup.find('from') я решил скать ошибку методом исключения поэтому довел до такого состояния и понял что в странице нет тэга '来自' а есть тэг '形式'

как только поменял на тэг 'form' ошибка с soup.find() - find() ушла может кому поможет

© www.soinside.com 2019 - 2024. All rights reserved.