BeautifulSoup не поднимает метатег
У меня есть простой скрипт, который получает HTML-страницу и пытается вывести содержимое метатега для ключевых слов. Каким-то образом, он не собирает содержимое метатега ключевых слов даже через html, содержащий тег. Любая помощь приветствуется.
url = “https://www.mediapost.com/publications/article/316086/google-facebook-others-pitch-in-app-ads-brand-s.html”
req = urllib2.Request(url=url)
f = urllib2.urlopen(req)
mycontent = f.read()
soup = BeautifulSoup(mycontent, 'html.parser')
keywords = soup.find("meta", property="keywords")
print keywords
3 ответа
Если вы проверите его правильно, метатег, который вы ищете, имеет имя атрибута, а не свойство, поэтому измените свой код на
keywords = soup.find("meta", attrs={'name':'keywords'})
а затем для отображения контента вам нужно написать
print keywords['content']
Выход:
Многие другие крупные бренды вкладывают большие рекламные доллары в мобильные игры, толкая Google, Facebook и других в рекламное пространство игровых приложений. Некоторые считают, что это связано с тем, что бренды ищут безопасное и безопасное место для размещения видеорекламы и взаимодействия с потребителями. 03/16/2018
Я настоятельно рекомендую вам requests
,
Код:
from bs4 import BeautifulSoup
import requests
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
keywords = soup.select_one('meta[name="keywords"]')['content']
>>> keywords
'Many more major brands are pumping big ad dollars into mobile games, pushing Google, Facebook and others into the in-app gaming ad space. Some believe this is in response to brands searching for a secure, safe place to run video ads and engage with consumers. 03/16/2018'
Использование 'lxml'
вместо 'html.parser'
и использовать soup.find_all
soup = BeautifulSoup(doc, 'lxml')
keywords = soup.find_all('meta',attrs={"name": 'keywords'})
for x in keywords:
print(x['content'])
Выход
Many more major brands are pumping big ad dollars into mobile games, pushing Google, Facebook and others into the in-app gaming ad space. Some believe this is in response to brands searching for a secure, safe place to run video ads and engage with consumers. 03/16/2018