导出到 csv 文件时,我得到标签,但在我的终端中,当我运行代码时,我看不到它们



我正在构建一个用于测试/教育目的的web scraper,我遇到了以下问题:

当我运行代码时,终端会按预期显示文本、日期和链接,但当我将信息导出到csv文件时,我会得到html

和标签。

我认为这要么是格式问题,要么是我没有找到删除p和span标记的正确方法(这很棘手,我已经尝试了一些方法和建议,这里已经讨论过了(。它可以使用"get_text((",但不能正确地将其导出到csv。

我的代码:

import requests 
from bs4 import BeautifulSoup
import sys
import pandas as pd

url = 'https://novini.bg'
request = requests.get('https://novini.bg')
soup = BeautifulSoup(request.text, 'html.parser')
articles = soup.find_all('article', class_= 'g-grid__item js-content')
art = []
for article in articles:
article_link = article.a.get('href')
article_title = article.find('h2', {'class', 'g-grid__item-title'}).text
article_date = article.find('p', class_ = 'g-grid__item--time')

print(article_title, end='n')
print(article_link, end='n'*2)
if article_date == None:
print('')
else:
print(article_date.text)

art.append({
'Headline': article_title,
'Link': article_link,
'Date Published': article_date
})
df = pd.DataFrame(art)
df.to_csv('News_Bulgaria.csv', index=False)

屏幕截图如下:导出到csv 后出现p和span标签

如有任何建议,我们将不胜感激。谢谢

因为您没有调用日期列中的.text属性

import requests 
from bs4 import BeautifulSoup
import sys
import pandas as pd
url = 'https://novini.bg'
request = requests.get('https://novini.bg')
soup = BeautifulSoup(request.text, 'html.parser')
articles = soup.find_all('article', class_= 'g-grid__item js-content')
art = []
for article in articles:
article_link = article.a.get('href')
article_title = article.find('h2', {'class', 'g-grid__item-title'}).text
article_date = article.find('p', class_ = 'g-grid__item--time')
article_date = article_date.text if article_date else None

#print(article_title, end='n')
#print(article_link, end='n'*2)
# if article_date == None:
#     print('')
# else:
#     print(article_date.text)

art.append({
'Headline': article_title,
'Link': article_link,
'Date Published': article_date
})
#print(art)
df = pd.DataFrame(art)
df.to_csv('News_Bulgaria.csv', index=False)

相关内容

最新更新