我正在嘗試將此物件的價格轉換為變數并將其列印出來/放入 CSV 中。
這是我要決議的 html 部分:
<span class="price" data-js-product-price="">
<span>$429.00 USD</span>
</span>
這是我的 python 代碼(對不起,我對 python 有點陌生,我一直在嘗試解決這個問題,如果代碼有點混亂,很抱歉)
from bs4 import BeautifulSoup
url_to_scrape = "https://www.backfireboards.com/?gclid=CjwKCAjwjtOTBhAvEiwASG4bCGHPgmV4XjyqAIFrW0Lr0IiW0AvfTiC7sZ4E-HtM_qJ9k4ahAu2CHxoCH5YQAvD_BwE"
request_page = urlopen(url_to_scrape)
page_html = request_page.read()
request_page.close()
html_soup = BeautifulSoup(page_html, 'html.parser')
board_prices = html_soup.find_all('span', class_='price')
print("num of prices: " str(len(board_prices)))
file_name = 'product.csv'
f = open(file_name,'w')
headers = 'Title, Price \n'
f.write(headers)
i = 1
for price in board_prices:
currPrice = price.span.text
print(i)
i = i 1
print(price)
print(currPrice)
f.close()
這是我得到的錯誤:
Traceback (most recent call last):
File "/Users/isaiah/PycharmProjects/Web_scrape/main.py", line 26, in <module>
currPrice = price.span.text
AttributeError: 'NoneType' object has no attribute 'text'
我知道這不是文本物件,但是當我在沒有 .text 的情況下列印它時,它會吐出:
1
<span class="price" data-js-popup-cart-subtotal=""></span>
None
2
<span class="price" data-js-product-price=""><span></span></span>
<span></span>
3
<span class="price" data-js-product-price=""><span></span></span>
<span></span>
4
<span class="price"><span></span></span>
<span></span>
5
<span class="price" data-js-product-price=""><span></span></span>
<span></span>
6
<span class="price" data-js-product-price=""><span></span></span>
<span></span>
我不知道為什么 429 美元在物件中消失了,我對網路抓取等有點陌生。有什么很簡單的我也很無知嗎?
另外,據我所知,該網站實際上在此頁面上列出了我從中提取的 8 個價格,但 board_prices 物件的大小僅為 6?有人也可以向我解釋一下嗎?
uj5u.com熱心網友回復:
您在頁面上看到的資料是從外部源加載的。要獲取電動滑板的名稱/價格,您可以使用以下示例:
import requests
from bs4 import BeautifulSoup
url = "https://www.backfireboards.com/collections/electric-skateboards"
soup = BeautifulSoup(requests.get(url).content, "html.parser")
for h4 in soup.select(".product-collection__content h4"):
title = h4.get_text(strip=True)
price = h4.find_next(class_="price").contents[-1].text
print("{:<15} {}".format(price, title))
印刷:
$429.00 USD Backfire G2 Black with Super Power Hobbywing Motors and 96mm Wheels with 180 Days Warranty Especially Suitable for Beginners
$649.00 USD Backfire G3 with Super Flexible Deck
$799.00 USD Backfire Zealot S Belt Drive Electric Skateboard
$1,899.00 USD Backfire Hammer Sledge
$1,199.00 USD Backfire Hammer Belt Drive All Terrain Electric Skateboard
$649.00 USD Backfire Zealot Belt Drive Electric Skateboard
$1,399.00 USD Backfire Ranger X3 All Terrain Electric Skateboard with 1500W X2 Ultra High Power Ultra High Torque Motors and 12S High Voltage High Efficiency Electronic System
$999.00 USD Backfire Ranger X2 All Terrain Electric Skateboard with 1200W X2 Ultra High Power Ultra High Torque Motors and 12S High Voltage High Efficiency Electronic System
$599.00 USD Backfire Mini Super Portable Electric Skateboard Best for City Commute
$999.00 USD Backfire G3 Plus with Carbon Fiber Deck and Ultra Long Range
$499.00 USD Backfire ERA Electric Skateboard
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/473572.html
