0

我正在尝试从报纸网站 Khaleej Times ( https://www.khaleejtimes.com ) 上刮下新闻文章的标题并将它们存储在 CSV 文件中

顺序如下:我刮掉它们(理论上),打印出来(冗余和浪费时间,我知道),将它们附加到列表中,打印出列表(只是为了检查列表是否真的有任何东西),将列表转换为 Pandas 数据框,最后将数据框转换为 CSV 文件

但是,每次我运行代码时,列表中都没有附加任何内容,因此我的 DataFrame 和 CSV 文件为空。有时会出现一两个文章标题,但大多数时候它是空的。

注意:我唯一感兴趣的是文章标题,而不是文本

我有更多关于此任务的问题,但我会将它们保存到单独的帖子中

我尝试的一件事是从 URL 中删除 HTTPS 并使其成为 HTTP 以及摆脱 www。如果有的话,那并没有太大的作用

from newspaper import Article
import newspaper
import csv
import pandas as pd
url = 'http://khaleejtimes.com'

a = newspaper.build(url)

titles = []  # initialize an empty list of titles

for article in a.articles:
    article.download()  # download the article
    article.parse()  # parse the article
    # print(article.title) print the title
    titles.append(article.title)  # append the title to the list


for i in range(len(titles)):  # initialize a for loop 
    print(titles[i])  # to print the titles within the titles list

TitleDF = pd.DataFrame({'Title': titles})  # convert the titles list to a 
pandas DataFrame
print(TitleDF)  # print the DataFrame
TitleDF.to_csv('KhaleejArticles.csv', encoding='utf-8', sep="\n")  
# Convert the DataFrame to csv format

我希望 print(TitleDF) 的输出是两列:一列带有索引 (0, 1, 2... n) 和 Titles (专门的文章标题)。

然而,有几次,要么是重复了几个标题,要么是很少的标题,而且大多数情况下根本没有标题。

我究竟做错了什么?据我所知,这不是语法错误

4

0 回答 0