【发布时间】:2018-04-27 03:44:35
【问题描述】:
我试图从 html td 标签中仅捕获价格值,但问题是还有其他具有相同类名的 td:请参见下图。 enter image description here
这是我写的代码
from builtins import any as b_any
from urllib.parse import urlparse
from urllib.parse import urljoin
from collections import Counter
import urllib.request
import csv
import schedule
import time
import re
from bs4 import BeautifulSoup
url="http://offer.ebay.es/ws/eBayISAPI.dll?ViewBidsLogin&item=122713288532&rt=nc&_trksid=p2047675.l2564"
req = urllib.request.Request(url, headers={'User-agent': 'Mozilla/5.0'})
htmlpage = urllib.request.urlopen(req)
html = htmlpage.read().decode('utf-8')
soup = BeautifulSoup(html,"html.parser")
table = soup.find_all('td',{'class':'onheadNav'})
'''for txt in table:
nametxt = txt.text
result = ''.join([i for i in nametxt if not i.isdigit()])
cleantxt = result.replace('(','')
print(cleantxt.replace(')',''))
rank = txt.a.text
print(rank)'''
price = soup.select('td.contentValueFont')
for pr in price:
print(pr.text)
如果我在 for 循环中分割价格,它将只获得第一个价格,但我想一次获得所有价格。
编辑描述: 我想捕获所有价格,但问题是三个 td 具有相同的类名,一个 td 用于 Cantidad(数量)的价格,一个用于日期,这些都具有相同的类。当我尝试仅获取价格部分时,我的代码将返回所有三个 td。我希望你现在明白了
【问题讨论】:
-
您的描述自相矛盾:仅捕获价格价值 我想一次获得所有价值。更新您的问题
-
我想捕获所有价格,但问题是有三个具有相同类名的 td,一个 td 用于 Cantidad(数量)的价格,一个用于日期,这些都具有相同的类。当我尝试仅获取价格部分时,我的代码将返回所有三个 td。我希望你现在明白了。
-
我不太了解beautifulsoup,但您可以尝试按位置获取td(例如
td[1]),而不是按类别获取。 -
我按照您的要求对它进行了切片,但它只返回第一个价格并打破循环。它不会进入下一次迭代。
标签: python html regex python-3.x beautifulsoup