【发布时间】:2021-01-07 02:35:29
【问题描述】:
我是 Python 初学者,正在尝试通过 BeautifulSoup 网页抓取项目学习。
我希望从this URL 中抓取记录项目标题、项目 URL 和购买日期并导出到 CSV。
我在抓取标题和 URL 方面取得了很大进展,但无法弄清楚如何在我的 for 循环中正确编码购买日期信息(下面的purchase_date 变量)。
当前发生的是 csv 文件中购买日期的数据(例如 p_date 标题)只显示没有文本的空白单元格。没有错误消息只是没有数据进入 csv。非常感谢任何指导。
谢谢!!
import requests
from requests import get
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
headers = {"Accept-Language": "en-US, en;q=0.5"}
url = "https://www.popsike.com/php/quicksearch.php?searchtext=metal+-signed+-promo+-beatles+-zeppelin+-acetate+-test+-sinatra&sortord=aprice&pagenum=1&incldescr=1&sprice=100&eprice=&endfrom=2020&endthru=2020&bidsfrom=&bidsthru=&layout=&flabel=&fcatno="
results = requests.get(url, headers=headers)
soup = BeautifulSoup(results.text, "html.parser")
title = []
date = []
URL = []
record_div = soup.find_all('div', class_='col-md-7 add-desc-box')
for container in record_div:
description = container.a.text
title.append(description)
link = container.find('a')
URL.append(link.get('href'))
purchase_date = container.find('span',class_= 'info-row').text
date.append(purchase_date)
test_data = pd.DataFrame({
'record_description': title,
'link': URL,
'p_date': date
})
test_data['link'] = test_data['link'].str.replace('../','https://www.popsike.com/',1)
print(test_data)
test_data.to_csv('popaaron.csv')
【问题讨论】:
-
您的 test_data 有正确的值吗?在存储到 csv 之前尝试打印 test_data
-
在写入 csv 之前使用数据帧是否有特殊原因?有更简单的替代方案可以完成工作。如果您愿意接受解决方案,请告诉我。
-
诚实的答案是我是一个初学者,并且正在按照教程进行操作,所以我绝对愿意接受建议和替代解决方案。谢谢你,阿瑞斯!
标签: python pandas for-loop beautifulsoup