[英]Problem with For Loop in Python BeautifulSoup web scraping
我是 Python 的初学者,正在尝试学习 BeautifulSoup 网络抓取项目。
我想从这个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')
我建议更改解析器类型:
soup = BeautifulSoup(results.text, "html5")
并修复购买日期的搜索表达式:
purchase_date = container.select('span.date > b')[0].text.strip(' \t\n\r')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.