#python #extract #python-newspaper #newspaper3k
#python #извлечение #python-газета #newspaper3k
Вопрос:
Я не могу загружать статьи, как это обычно делается, для создания экземпляра объекта Article, как показано ниже:
from newspaper import Article
url = 'http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/'
article = Article(url)
article.download()
article.top_image
Однако я могу получить HTML из запроса. Могу ли я использовать этот необработанный HTML и каким-то образом передать его в газету, чтобы извлечь из него изображение? (ниже приведена попытка, но не работает). Спасибо
from newspaper import Article
import requests
url = 'http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/'
raw_html= requests.get(url, verify=False, proxies=proxy)
article = Article('')
article.set_html(raw_html)
article.top_image
Комментарии:
1. почему это не работает? Какую ошибку вы получаете?
2. Я не могу ввести внутренний ключ сертификата SLL моей компании в свой запрос. Проблема рассматривается. Единственный обходной путь — сделать запрос вручную и передать
verify=False
, что дает мне необработанный HTML
Ответ №1:
Газета модуля Python позволяет использовать прокси, но эта функция не указана в документации модуля.
Доверенные лица с Газетой
from newspaper import Article
from newspaper.configuration import Configuration
# add your corporate proxy information and test the connection
PROXIES = {
'http': "http://ip_address:port_number",
'https': "https://ip_address:port_number"
}
config = Configuration()
config.proxies = PROXIES
url = 'http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/'
articles = Article(url, config=config)
articles.download()
articles.parse()
print(articles.top_image)
https://ewscripps.brightspotcdn.com/dims4/default/d49dab0/2147483647/strip/true/crop/400x210 0 8/resize/1200x630!/quality/90/?url=http://mediaassets.fox13now.com/tribune-network/tribkstu-files-wordpress/2012/04/national-news-e1486938949489.jpg
Запросы с доверенными лицами и Газетой
import requests
from newspaper import Article
url = 'http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/'
raw_html = requests.get(url, verify=False, proxies=proxy)
article = Article('')
article.download(raw_html.content)
article.parse()
print(article.top_image) https://ewscripps.brightspotcdn.com/dims4/default/d49dab0/2147483647/strip/true/crop/400x210 0 8/resize/1200x630!/quality/90/?url=http://mediaassets.fox13now.com/tribune-network/tribkstu-files-wordpress/2012/04/national-news-e1486938949489.jpg
Ответ №2:
Прежде всего убедитесь, что вы используете python3
то, что вы запускали pip3 install newspaper3k
раньше.
Затем, если вы получаете ошибки SSL с первой версией (как показано ниже)
/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:981: InsecureRequestWarning: на хост отправляется непроверенный запрос HTTPS ‘fox13now.com ‘. Настоятельно рекомендуется добавить проверку сертификата. Смотрите: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings предупреждения.предупреждать(
вы можете отключить их, добавив
import urllib3
urllib3.disable_warnings()
Это должно сработать:
from newspaper import Article
import urllib3
urllib3.disable_warnings()
url = "https://www.fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/"
article = Article(url)
article.download()
print(article.html)
Запустите с python3 <yourfile>.py
.
Установка HTML в статье самостоятельно не принесет вам большой пользы, так как таким образом вы ничего не получите в других полях. Дайте мне знать, если это устранит проблему или если появятся какие-либо другие ошибки!
Комментарии:
1. Причина, по которой я не могу загружать файлы с помощью Газет, заключается в том, что я использую корпоративный прокси. Я пытался внедрить SSL-сертификат множеством способов. Единственный способ, которым я могу пройти на данный момент, — это использовать
verify=False
в запросе, который, очевидно, придется изменить в дальнейшем. Я могу запускать газетные статьиsummary
в необработанном HTML, поэтому моя интуиция подсказывает, что я должен быть в состоянии получить изображение, также используя необработанный HTML.2. Ах, это все усложняет. Можете ли вы использовать полнотекстовый текст?
from newspaper import fulltext; html = requests.get(...).text; text = fulltext(html)
3. Да, я могу это сделать. Если вы запустите второй фрагмент кода, вы сможете проверить, какие функции из статьи работают с необработанным HTML, а какие нет.
4. Другим вариантом может быть добавление пользовательской версии статьи (см. Последний блок кода в этом блоге .