写入数据报废问题

2024-04-25 23:41:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须做一个代码,以便从网站上搜集数据,然后分析他们的大学。 我的问题是,我编写这段代码是为了获取所有产品的一些数据,但当我运行它时,它只显示每个变量的单个响应。 你能帮我解决这个错误吗?你知道吗

from bs4 import BeautifulSoup as soup
import urllib
from urllib.request import urlopen as uReq
import requests


myurl='https://boutique.orange.fr/mobile/choisir-un-mobile'


Uclient=uReq(myurl)
page=Uclient.read()
Uclient.close()

pagesoup=soup(page,'html.parser')

containers=pagesoup.findAll('div',{'class':'box-prod pointer'})


container=containers[0]

produit=container.img['alt']

price=container.findAll('span',{'class':'price'})


price2=container.findAll('div',{'class':'prix-seul'})


avis=container.footer.div.a.img['alt']


file="orange.csv"
f=open(file,'w')
headers='produit,prix avec abonnement, prix seul, avis\n'
f.write(headers)


for container in containers:
    produit=container.img['alt']

    price=container.findAll('span',{'class':'price'})


    price2=container.findAll('div',{'class':'prix-seul'})


    avis=container.footer.div.a.img['alt']

Tags: 代码importdivimgcontaineraltpriceclass
1条回答
网友
1楼 · 发布于 2024-04-25 23:41:09

你可以使用不同的选择器。按指数将每个产品的两个价格分开。使用joinfindall提取特定于价格的信息。你知道吗

from bs4 import BeautifulSoup
import requests
import pandas as pd

url = 'https://boutique.orange.fr/mobile/choisir-un-mobile'
res = requests.get(url)
soup = BeautifulSoup(res.content, "lxml")
#print(len(soup.select('#resultat .box-prod.pointer')))
p = re.compile('[0-9,€]+')
altText= [item.get('alt').strip() for item in soup.select('#resultat .box-prod.pointer .lazy')]
titles = [item.text.strip().replace('\n', ' ') for item in soup.select('#resultat .box-prod.pointer .titre-produit')]
allPrices = [''.join(p.findall(item.text)) for item in soup.select('#resultat  span.price')]
aPartirPrice = allPrices[0::2]
prixSeul = allPrices[1::2]
items = list(zip(titles, altText, aPartirPrice, prixSeul))
df = pd.DataFrame(items,columns=['title', 'altText', 'aPartirPrice', 'prixSeul'])
df.to_csv(r'C:\Users\User\Desktop\Data.csv', sep=',', encoding='utf-8',index = False )

转置为:

df = df.T

相关问题 更多 >