【发布时间】:2021-05-21 08:27:29
【问题描述】:
我一直在编写下面的代码,让自己陷入困境。我想做的是使用 BeautifulSoup 抓取的文本构建一个简单的数据框。
我已经从 <h5> 和 <p> 标签中抓取了适用的文本,但使用 find_all 意味着当我构建数据框并写入 csv 时,标签被包含在内。为了解决这个问题,我添加了 print(p.text, end=" ") 语句,但现在没有任何内容写入 csv。
谁能看出我做错了什么?
import pandas as pd
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
}
course = []
runner = []
page = requests.get('https://www.attheraces.com/tips/atr-tipsters/hugh-taylor', headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
tips = soup.find('div', class_='sticky')
for h5 in tips.find_all("h5"):
course_name = print(h5.text, end=" ")
course.append(course_name)
for p in tips.find_all("p"):
runner_name = print(p.text, end=" ")
runner.append(runner_name)
todays_tips = pd.DataFrame(
{'Course': course,
'Selection': runner,
})
print(todays_tips)
todays_tips.to_csv(r'C:\Users\*****\Today.csv')
【问题讨论】:
-
请edit你的问题显示你想要的输出。为什么不能只使用
course.append(h5.text)和runner.append(p.text)?
标签: python pandas beautifulsoup