Python 3.7 BeautifullSoup soup.find error - find () не принимает аргументов без ключевых слов - PullRequest
0 голосов
/ 30 мая 2019

У меня был следующий HTML-код с URL:

<h4>
   \r\n                            \r\n\r\n
   <a href="/l">
      \r\n    <!-- mp_trans_rt_start id="1" args="as" 1 -->\r\n    <span class="brandWrapTitle">\r\n        <span class="productdescriptionbrand">Mxxx</span>\r\n    </span>\r\n    <span class="nameWrapTitle">\r\n        <span class="productdescriptionname">Axxxname</span>\r\n    </span>\r\n    <!-- mp_trans_rt_end 1 -->\r\n
   </a>
   \r\n\r\n                        
</h4>

И я пытаюсь использовать python, чтобы найти имя класса:

  import urllib.request
from bs4 import BeautifulSoup
url = "https://link"
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
urlwithagent = urllib.request.Request(url,headers={'User-Agent': user_agent})
response = urllib.request.urlopen(urlwithagent)
soup = response.read()
product = soup.find("h4", attrs ={"class=": "productdescriptionname"})
print (product)

Everythink работает идеально до строки:

product = soup.find("h4", attrs ={"class=": "productdescriptionname"})

Я получаю сообщение об ошибке вроде:

find() takes no keyword arguments

И я понятия не имел, как это исправить - вокруг много информации, но ничего не работает: /

1 Ответ

3 голосов
/ 30 мая 2019

Вам необходимо преобразовать его в BeautifulSoup объект перед использованием find, иначе он использует str.find

Пример:

soup = BeautifulSoup(response.read(), "html.parser")
product = soup.find("h4", attrs ={"class": "productdescriptionname"})
print (product)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...