Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python BeautifulSoup web抓取中的For循环问题_Python_Pandas_For Loop_Beautifulsoup - Fatal编程技术网

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

Python BeautifulSoup web抓取中的For循环问题,python,pandas,for-loop,beautifulsoup,Python,Pandas,For Loop,Beautifulsoup,我是Python的初学者&试图通过一个BeautifulsoupWebScraping项目来学习 我正在寻找从URL和导出到CSV的记录项目标题,项目和购买日期的URL 我在抓取标题和URL方面取得了很大的进步,但就是不知道如何在我的for循环(下面的purchase\u date变量)中正确地编码购买日期信息 当前的情况是csv文件中的购买日期数据(例如p_日期标题)只显示空白单元格,没有文本。。没有错误消息,只是没有数据输入csv。非常感谢您的指导 谢谢 import requests f

我是Python的初学者&试图通过一个BeautifulsoupWebScraping项目来学习

我正在寻找从URL和导出到CSV的记录项目标题,项目和购买日期的URL

我在抓取标题和URL方面取得了很大的进步,但就是不知道如何在我的for循环(下面的purchase\u date变量)中正确地编码购买日期信息

当前的情况是csv文件中的购买日期数据(例如p_日期标题)只显示空白单元格,没有文本。。没有错误消息,只是没有数据输入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')

我建议更改解析器类型:

soup = BeautifulSoup(results.text, "html5")
并修复购买日期的搜索表达式:

purchase_date = container.select('span.date > b')[0].text.strip(' \t\n\r')

您的测试数据是否具有正确的值?在将测试数据存储到csvIs之前,请尝试打印测试数据。在写入csv之前,您使用数据帧的具体原因是什么?有更简单的替代方案可以完成这项工作。如果你对解决方案持开放态度,请告诉我。诚实的回答是,我是一名初学者,并遵循教程走到这一步,因此我绝对愿意接受建议和其他解决方案。谢谢你,阿瑞斯!您的测试数据是否具有正确的值?在将测试数据存储到csvIs之前,请尝试打印测试数据。在写入csv之前,您使用数据帧的具体原因是什么?有更简单的替代方案可以完成这项工作。如果你对解决方案持开放态度,请告诉我。诚实的回答是,我是一名初学者,并遵循教程走到这一步,因此我绝对愿意接受建议和其他解决方案。谢谢你,阿瑞斯!哇,太谢谢你了!!我需要将其用作解析器类型:soup=BeautifulSoup(results.text,“html5lib”),然后这就很好了,Alexandra。谢谢。Alexandra如果你不介意我问的话,‘span.date>b’中的“>”是什么意思。。。。。。是否搜索b容器标记中的所有内容?“>”用于选择特定父级中的元素。它也被称为子组合选择器,即它只选择父对象的直接子对象。这里有一个详细的解释和一个例子:哇,非常感谢!!我需要将其用作解析器类型:soup=BeautifulSoup(results.text,“html5lib”),然后这就很好了,Alexandra。谢谢。Alexandra如果你不介意我问的话,‘span.date>b’中的“>”是什么意思。。。。。。是否搜索b容器标记中的所有内容?“>”用于选择特定父级中的元素。它也被称为子组合选择器,即它只选择父对象的直接子对象。以下是一个示例的详细说明: