使用python和beautifulsoup从网站将数据报废为csv文件格式

时间:2018-12-24 04:47:18

标签: python beautifulsoup

我正在尝试将所有图形卡的详细信息放入一个csv文件中,但无法抓取数据(这样做是为了出于学习目的而抓取数据的项目)。我是python和html的新手。 我正在使用请求库和beautifulsoup库。

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = 'https://www.newegg.com/Product/ProductList.aspx?Submit=ENE&DEPA=0&Order=BESTMATCH&Description=graphics+card&N=-1&isNodeId=1'
uClient = uReq(my_url)
Negg = uClient.read()
uClient.close
Complete_Graphics_New_Egg = soup(Negg,"html.parser")

Container_Main = Complete_Graphics_New_Egg.findAll("div",{"class":"item-container"})

Container_Main5 = str(Container_Main[5])
path_file='C:\\Users\\HP\\Documents\\Python\\Container_Main5.txt'
file_1 = open(path_file,'w')
file_1.write(Container_Main5)
file_1.close()

##Container_Main_details = Container_Main5.a

#div class="item-badges"

Container_5_1 = str(Container_Main[5].findAll("ul",{"class":"item-features"}))
path_file='C:\\Users\\HP\\Documents\\Python\\Container_test_5_1.txt'
file_5_1 = open(path_file,'w')
file_5_1.write(Container_5_1)
file_5_1.close()
Container_5_1.li

Container_5_2 = str(Container_Main[5].findAll("p",{"class":"item-promo"}))
path_file='C:\\Users\\HP\\Documents\\Python\\Container_test_5_2.txt'
file_5_2 = open(path_file,'w')
file_5_2.write(Container_5_2)
file_5_2.close()
##p class="item-promo"
##div class="item-info"

1 个答案:

答案 0 :(得分:0)

这应该使您入门。我也会为您分解一下,以便您可以在学习时进行修改和播放。我还建议使用Pandas,因为它是用于数据处理的流行库,如果您还没有使用它,那么您将在不久的将来使用它。

我首先初始化一个结果数据框,以存储所有要解析的数据:

processYourImageFiles(List<File>)

接下来,从站点获取html表单,并将其传递给BeautifulSoup:

import bs4
import requests
import pandas as pd

results = pd.DataFrame()

然后,您可以找到所有您感兴趣的标签。我添加的唯一一件事是,对所找到的每个标签/元素进行迭代:

my_url = 'https://www.newegg.com/Product/ProductList.aspx?Submit=ENE&DEPA=0&Order=BESTMATCH&Description=graphics+card&N=-1&isNodeId=1'

response = requests.get(my_url)
html = response.text

soup = bs4.BeautifulSoup(html, 'html.parser')

,然后在每个这些容器中,从商品功能和商品促销中获取所需的数据。我将该数据存储到一个临时数据帧(1行)中,然后将其附加到结果数据帧中。因此,在每次迭代之后,临时数据帧都会被新信息覆盖,但是结果不会被覆盖;它只会被添加。

最后,使用熊猫将数据框保存到csv。

Container_Main = soup.find_all("div",{"class":"item-container"})
for container in Container_Main:

完整的代码:

results.to_csv('path/file.csv', index=False)