我正试图从网上商店中砍价。我正在遍历页面上的产品,并将其包含在正则表达式中。尽管转义了大括号,但正则表达式不起作用。 (findall返回一个空列表)
汤.findall返回的HTML代码:
[<div class="ps4-price at-min-price-1"> from 29 GBP </div>]
[<div class="ps4-price at-min-price-2"> from 35 GBP </div>]
Python代码:
for product in range(21):
min_prices_text = str(soup.findAll("div", class_="ps4-price at-
min- price-{}".format(product)))
min_price = re.findall('<div class="ps4-price at-min-price-
{{}}"> (.+?)<'.format(product), str(min_prices_text))
答案 0 :(得分:0)
您可以访问通过.string
获得的元素的findAll
属性,并且仅将正则表达式应用于纯文本。例如,由于您只希望在那里有一个整数,因此可以在这些字符串上应用re.sub(r'\D+', '', min_prices_text.string)
。
查看示例代码:
results = []
for product in range(21):
min_prices_text = soup.find("div", class_="ps4-price at-min-price-{}".format(product))
if min_prices_text:
results.append(re.sub(r'\D+', '', min_prices_text.string))
print(results) # => ['29', '35']
或者如果您要将字符串列表转换为整数,请使用list(map(int, results))
。