网络抓取从olx获取二手车的价格



我是python的新手。我最近学习了python,作为我的第一个项目,我决定为OLX创建一个网络爬虫,它将为我提供各种SUV的广告及其价格和链接,因为我们计划购买一辆车,所以我认为这不仅是一个好项目,而且我也会实时使用它。 该网站的链接是 - https://www.olx.in/pune_g4059014/cars_c84 我希望它向我发送与我的搜索相关的广告的名称、价格和链接。

名称和价格在span类中,但由于我对CSS一无所知,我不明白它的含义以及如何提取其中的数据。

梅赛德斯-奔驰 C 级 250 前卫, 2018, 柴油 这就是名称的存储方式。

₹ 33,50,000 这就是价格的存储方式。

请帮帮我!

如果您不想使用抓取框架或 html 解析器,您可以使用带有 re 的正则表达式进行一些非常基本的抓取。

正如您所注意到的,如果信息存储在<span>标签中,则全部如此。此外,这些标签中的每一个都有一个data-aut-id="something"其中某些内容是标签中的信息。因此,您可以为您关心的每个信息构建正则表达式 (regex(。

re.findall将查找标记的所有匹配项,并将其中的内容(使用捕获组(提取到列表中。然后,您可以将所有这些列表压缩在一起。

要找到获取广告链接,您必须将其从<a>代码中的href参数中拉出。方便的是,所有汽车都在列表项<li>中,带有data-aut-id="itemBox",因此正则表达式可以只查找之后的第一个href

import requests
import re
url_base = "https://www.olx.in"
url = url_base + "/pune_g4059014/cars_c84"
info_labels = ("itemPrice", "itemTitle", "itemDetails", "item-location")
info_pattern = r'(?s)<span.*?data-aut-id="{}".*?>(.*?)</span>'
link_pattern = r'(?s)<li.*?data-aut-id="itemBox".*?href="([^"]+?)"'
response = requests.get(url)
cars = list(zip(
*(re.findall(pattern.format(label), response.text) for label in info_labels),
(url_base + path for path in re.findall(link_pattern, response.text))
))
cars[:3]
[('₹ 38,50,000',
'Audi A6 2.0 TDI Premium Plus, 2018, Diesel',
'2018 - 10,500 km',
'Shivaji Nagar, Pune',
'https://www.olx.in/item/audi-a6-20-tdi-premium-plus-2018-diesel-iid-1559999282'),
('₹ 19,00,000',
'Ford Endeavour 2017 Diesel Well Maintained',
'2017 - 60,000 km',
'Lumbini nagar, Pune',
'https://www.olx.in/item/ford-endeavour-2017-diesel-well-maintained-iid-1570685051'),
('₹ 33,50,000',
'Mercedes-Benz C-Class 250 Avantgarde, 2018, Diesel',
'2018 - 20,000 km',
'Shivaji Nagar, Pune',
'https://www.olx.in/item/mercedes-benz-c-class-250-avantgarde-2018-diesel-iid-1554189590')]

然后,您可以使用 csv 库将其输出!

最新更新