繁体   English   中英

Python BeautifulSoup web 抓取中的 For 循环问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM