gpt4 book ai didi

python - Newspaper3k : How to Scrape ONLY Article HTML? Python 的缺点

转载 作者:行者123 更新时间:2023-12-03 08:39:46 27 4
gpt4 key购买 nike

您好,非常感谢您的帮助,

我一直在使用 Python 和 Newspaper3k 来抓取网站,但我注意到有些功能......嗯......不起作用。特别是,我只能抓取大约 1/10 甚至更少网站的文章 HTML。这是我的代码:

from newspaper import Article
url = pageurl.com
article = Article(url, keep_article_html = True, language ='en')
article.download()
article.parse()
print(article.title + "\n" + article.article_html)

发生的情况是,根据我的经验,100% 的情况下,文章标题被抓取,但文章 HTML 几乎从未成功抓取,并且没有返回任何内容。我知道 Newspaper3k 是基于 BeautifulSoup 的,所以我也不指望它能工作,而且有点卡住了。有什么想法吗?

编辑:我尝试抓取的大多数网站都是西类牙语的

最佳答案

所以我在用 beautifulsoup 抓取 wellness-spain.com 时并没有发现太多问题。该网站没有那么多的 javascript。这可能会导致 HTML 解析器(例如 beautifulsoup)出现问题,因此您在抓取网站时应该小心,关闭 javascript 以在抓取之前从浏览器获得什么输出。

您没有具体说明您需要该网站的哪些数据,因此我进行了有根据的猜测。

编码示例

import requests 
from bs4 import BeautifulSoup

url = 'http://www.wellness-spain.com/-/estres-produce-acidez-en-el-organismo-principal-causa-de-enfermedades#:~:text=Con%20respecto%20al%20factor%20emocional,produce%20acidez%20en%20el%20organismo'
html = requests.get(url)
soup = BeautifulSoup(html.text,'html.parser')
title = soup.select_one('h1.header-title > span').get_text().strip()
sub_title = soup.select_one('div.journal-content-article > h2').get_text()
author = soup.select_one('div.author > p').get_text().split(':')[1].strip()

代码说明

我们使用请求的 get 方法来获取 HTTP 响应。漂亮的汤,需要使用 .text 进行响应。您经常会看到 html.content 但那是二进制响应,所以不要使用它。 HTML解析器只是beautifulsoup用来正确解析html的解析器。

然后我们使用 CSS 选择器来选择您想要的数据。在变量标题中,我们使用 select_one ,它将仅选择元素列表中的一个,因为有时您的 CSS 选择器会为您提供 HTML 标签列表。如果您不了解 CSS 选择器,这里有一些资源。

  1. Video
  2. Article

本质上,在 title 变量中我们指定了 html 标签,. 表示类名,因此 h1.header-title 将抓取带有类 header 的 html 标签 h1 -标题。 > 将您引导至 h1 的直接子元素,在本例中,我们希望 span 元素是 H1 的子元素。

另外,在 title 变量中,我们有 get_text() 方法从 html 标记中获取文本。然后我们使用 string strip 方法去除字符串中的空格。

与 sub_title 变量类似,我们获取类名为 Journal-content-article 的 div 元素,我们获取直接子 html 标签 h2 并获取它的文本。

author 变量,我们选择类名author 的div 并获取直接子p 标签。我们正在抓取文本,但底层文本具有 autor: NAME,因此使用 split string 方法,我们将该字符串拆分为两个元素的列表:autor NAME,然后我选择了该列表的第二个元素,然后使用字符串方法 strip,从中删除了所有空格。

如果您在抓取特定网站时遇到问题,最好提出一个新问题并向我们展示您尝试过的代码、您的具体数据需求是什么,并尝试尽可能明确地说明这一点。该 URL 可帮助我们指导您让抓取工具正常工作。

关于python - Newspaper3k : How to Scrape ONLY Article HTML? Python 的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62943152/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com