2017-05-27 57 views
1

我想选择只是列出的每个项目的销售价格,但这是我能得到的最接近的。Ebay Webscraper

import requests 
from bs4 import BeautifulSoup 

url = 'http://www.ebay.co.uk/sch/i.html?_from=R40&_sacat=0&_nkw=graphics%20card&LH_Complete=1&LH_Sold=1&rt=nc&_trksid=p2045573.m1684' 
r = requests.get(url) 
soup = BeautifulSoup(r.content, 'html.parser') 
Sale_Price = [tag['class'] for tag in soup.find_all("span", class_="bold bidsold")] 
print(Sale_Price) 

这给了我: [ '大胆', 'bidsold'],[ '大胆', 'bidsold'],[ '大胆', 'bidsold'],[ '大胆', “ “bold”,“bidsold”],['bold','bidsold'],['bold','bidsold'],['bold','bidsold'],['bold' “bold”,“bidsold”],['bold','bidsold'],['bold','bidsold'],['bold','bidsold'],['bold' “bold”,“bidsold”],['bold','bidsold'],['bold','bidsold'],['bold','bidsold'],['bold' “bold”,“bidsold”],['bold','bidsold'],['bold','bidsold'],['bold','bidsold'],['bold' “bold”,“bidsold”],['bold','bidsold'],['bold','bidsold'],['bold','bidsold'],['bold' “bold”,“bidsold”],['bold','bidsold'],['bold','bidsold'],['bold','bidsold'],['bold' “bold”,“bidsold”],['bold','bidsold'],['bold','bidsold'],['bold','bidsold'],['bold' “bold”,“bidsold”],['bold','bidsold'],['bold','bidsold'],['bold','bidsold'],['bold' “bold”,“bidsold”],['bold','bidsold'],['bold','bidsold'],['bold','bidsold'],['bold' [bold,'bidsold']]

+1

这有什么困惑?您选择了您搜索的课程...尝试添加除tag以外的内容['class']' –

回答

2

您正在储存的名称为class。价格在string。使用get_text()得到string。这些字符串包括很多空格或新行,请使用strip()来消除这些字符。

import requests 
from bs4 import BeautifulSoup 

url = 'http://www.ebay.co.uk/sch/i.html?_from=R40&_sacat=0&_nkw=graphics%20card&LH_Complete=1&LH_Sold=1&rt=nc&_trksid=p2045573.m1684' 
r = requests.get(url) 
soup = BeautifulSoup(r.content, 'html.parser') 
Sale_Price =[ tag.get_text().strip() for tag in soup.find_all("span", class_="bold bidsold") ] 
print(Sale_Price) 

它给人的输出:

['£159.99', '£240.00', '£8.00', '£100.00', '£54.99', '£324.99', '£10.00', '£130.00', '£21.00', '£68.00', '£25.00', '£90.00', '£210.00', '£269.49', '£90.56', '£5.90', '£56.00', '£89.99', '£142.00', '£104.00', '£35.00', '£8.80', '£27.00', '£45.00', '£45.00', '£115.11', '£293.19', '£172.00', '£42.00', '£14.39', '£120.00', '£24.99', '£11.73', '£10.50', '£88.00', '£340.00', '£136.82', '£5.00', '£21.32', '£66.46', '£49.99', '£25.00', '£30.00', '£385.00', '£258.00', '£64.30', '£87.00', '£29.99', '£77.99', '£36.88', '£71.00'] 

编辑
如果你想忽略£标志然后采取字符串没有第一个字符。

Sale_Price =[ tag.get_text().strip()[1:] for tag in soup.find_all("span", class_="bold bidsold") ] 
print(Sale_Price) 

这将只存储没有£标志的价格。

+0

非常感谢。任何想法如何去除每个字符串的英镑符号?我是一个初学者,而不是熟悉正则表达式,但是从我的搜索结果中,我搜集了're.sub('[£]','',line)]''涉及某种方式... –

+1

@JoshDiamond不需要' regex'。我已经更新了代码,请看一下。 –

+0

@JoshDiamond你还有什么问题吗? –