我正在尝试获取网站上显示的汽车型号名称,但由于某种原因(在尝试了以下所有操作后),它似乎不起作用。
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "https://www.carsales.com.au/cars/results?offset=12"
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
model_name = soup.find_all('a', attrs={'data-webm-clickvalue':'sv-view-title'})
final_model_name = model_name[1]
clean_model_name = final_model_name.text
clean_model_name = clean_model_name.replace("\r", "")
clean_model_name = clean_model_name.replace("\n", "")
clean_model_name = clean_model_name.strip()
clean_model_name = clean_model_name.rstrip()
print(clean_model_name)
我还创建了一个变量,其中包含我想要删除的整个句子(有效),然后在 strip 函数中对其进行解析,但它的 MY14 元素会根据汽车的年份而变化。为每年创建一个变量似乎效率不高。
一些索引返回干净的结果,但是其他索引返回以下内容(滚动):
2014 Holden Cruze SRi Z Series JH Series II Auto MY14 Manufacturer Marketing Year (MY) The manufacturer's marketing year of this model.
我不需要汽车模型之后的任何细节 - 经过研究,strip()
应该删除两侧的空白(但在本例中没有)和 rstrip()
应该删除右侧的所有内容(但在本例中没有)
我已经成功创建了一个 for 循环,该循环遍历此页面上的每辆汽车,但由于额外的不需要的文本,DataFrame 中的某些行被扩展。
最佳答案
strip() 只会删除您正在使用的字符串前后的空白字符,您可以尝试以下操作:
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "https://www.carsales.com.au/cars/results?offset=12"
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
model_name = soup.find_all('a', attrs={'data-webm-clickvalue':'sv-view-title'})
final_model_name = model_name[1]
clean_model_name = final_model_name.text
clean_model_name = clean_model_name.strip().split()[:5]
clean_model_name = ' '.join(clean_model_name)
print(clean_model_name)
我注意到大多数型号名称都有 5 个关键部分(年份、品牌和型号),因此我使用 [:5] 来获取型号名称的前五个元素,但如果您想减去第一个元素然后只需将Series元素的值更改为3。strip()有助于用空格分割模型名称。希望这有帮助
关于python - 如何删除字符串右侧的多余文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46067838/