Python网页抓取列表操作

2024-09-22 20:18:58 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,我是Python新手,我正在写一个从网页中提取数据的程序。使用此搜索行:

carTypeWeb = soup.find_all("span", {"class":"h3"}) 

我得到以下输出:

> [<span class="h3">BMW 420d Gran Coupe M-Sportpaket DIEBSTAHLSCHADEN
> !!</span>,  <span class="h3 u-block">25.950 \u20ac</span>,  <span
> class="h3">BMW 420d Coupe Sport Line,Xenon,Navi,M-Tech,19 Zoll</span>,
> <span class="h3 u-block">26.795 \u20ac</span>,.....]

我现在正挣扎着a)删除列表中的每一个项目(在第1行和第3行上面的复制示例中),b)只在列表中的数字值(例如25950和26795)上面有for行,例如2和4

事先非常感谢您的帮助;非常感谢


Tags: 数据程序网页列表findblockh3class
2条回答

你可以这样做:

# To read only alternate items of list starting from item 2

for i in range(1, len(carTypeWeb), 2):
    price = (carTypeWeb[i].text).split(' ')[0].replace('.','')

在上面的代码中,.text提取span标记之间的内容,然后.split[0],在空格处拆分内容,第0部分给出: \u25.950

在这之后,将字符串中的.替换为不带空格将得到: \u25950

然后你可以做,eval(price)把字符串转换成整数。我希望这有帮助

如果您只需要每隔一行,为什么不将代码更改为:

carTypeWeb = soup.find_all("span", {"class":"h3 u-block"})

相关问题 更多 >