仍在學習 Python,如果這是一個非常明顯的錯誤,請道歉。不過,我已經想弄清楚幾個小時了,我想看看是否有人可以幫忙。
我已經為他們的溜冰鞋名稱和價格抓取了一個曲棍球網站,并將其寫入 CSV。唯一的問題是,當我將其寫入 CSV 時,名稱列(列為 Gear)和價格列的行未對齊。它去:
- 齒輪名稱 1
- 行空間
- 價格
- 行空間
- 齒輪名稱 2
將齒輪和價格行彼此相鄰對齊會很棒。如果有幫助,我還附上了 CSV 圖片的鏈接。
import requests
from bs4 import BeautifulSoup as Soup
webpage_response = requests.get('https://www.purehockey.com/c/ice-hockey-skates-senior?')
webpage = (webpage_response.content)
parser = Soup(webpage, 'html.parser')
filename = "gear.csv"
f = open(filename, "w")
headers = "Gear, Price"
f.write(headers)
for gear in parser.find_all("div", {"class": "details"}):
gearname = gear.find_all("div", {"class": "name"}, "a")
gearnametext = gearname[0].text
gearprice = gear.find_all("div", {"class": "price"}, "a")
gearpricetext = gearprice[0].text
print (gearnametext)
print (gearpricetext)
f.write(gearnametext "," gearpricetext)
[不均勻行的樣子][1] [1]:https://i.stack.imgur.com/EG2f2.png
uj5u.com熱心網友回復:
我注意到在字串中gearnametext回傳 2 。\n您應該嘗試str.replace()洗掉那些\n讓您跳轉到下一行的方法。嘗試:
import requests
from bs4 import BeautifulSoup as Soup
webpage_response = requests.get('https://www.purehockey.com/c/ice-hockey-skates-senior?')
webpage = (webpage_response.content)
parser = Soup(webpage, 'html.parser')
filename = "gear.csv"
f = open(filename, "w")
headers = "Gear, Price"
f.write(headers)
for gear in parser.find_all("div", {"class": "details"}):
gearname = gear.find_all("div", {"class": "name"}, "a")
gearnametext = gearname[0].text.replace('\n','')
gearprice = gear.find_all("div", {"class": "price"}, "a")
gearpricetext = gearprice[0].text
print (gearnametext)
print (gearpricetext)
f.write(gearnametext "," gearpricetext)
我在回圈內更改了齒輪名稱的第二行:gearnametext = gearname[0].text.replace('\n','').
uj5u.com熱心網友回復:
建議使用 python 3with open(filename, 'w') as f:和strip()你的檔案之前的文本write()。
除非您不使用“a”模式來附加每一行,否則您必須在您正在撰寫的每一行中添加換行符。
例子
import requests
from bs4 import BeautifulSoup as Soup
webpage_response = requests.get('https://www.purehockey.com/c/ice-hockey-skates-senior?')
webpage = (webpage_response.content)
parser = Soup(webpage, 'html.parser')
filename = "gear1.csv"
headers = "Gear,Price\n"
with open(filename, 'w') as f:
f.write(headers)
for gear in parser.find_all("div", {"class": "details"}):
gearnametext = gear.find("div", {"class": "name"}).text.strip()
gearpricetext = gear.find("div", {"class": "price"}).text.strip()
f.write(gearnametext "," gearpricetext "\n")
輸出
Gear,Price
Bauer Vapor X3.7 Ice Hockey Skates - Senior,$249.99
Bauer X-LP Ice Hockey Skates - Senior,$119.99
Bauer Vapor Hyperlite Ice Hockey Skates - Senior,$999.98 - $1149.98
CCM Jetspeed FT475 Ice Hockey Skates - Senior,$249.99
Bauer X-LP Ice Hockey Skates - Intermediate,$109.99
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480111.html
標籤:python-3.x CSV 网页抓取 美丽的汤
上一篇:網頁抓取回傳一個空串列
