① 怎么破解汽车之家网页限制复制功能
点查看源码,手动复制.
② 联合蔚来汽车对抗特斯拉——小鹏P7上市发布
(文/编辑崇森)
小鹏汽车作为新势力造车的代表之一,它的发展吸引了很多人的关注,近期也受到了同行的“霸凌”与“帮助”。“霸凌”是指4月25日,在特斯拉公开起诉曹光植一年多以后,特斯拉再一次向法院提出了新的诉求,希望小鹏汽车披露其自动驾驶技术源代码,并且交出自动驾驶硬件的图片。小鹏汽车随后发布官方声明,拒绝提供源代码。“帮助”是指小鹏汽车与蔚来汽车实现充电网络的共享,也就是说蔚来的超级充电站支持小鹏汽车充电,小鹏车主打开APP扫码即可启动蔚来的超级充电桩充电。
在动力方面,小鹏P7四驱高性能版本车型的百公里加速仅在4.3s,采用前后双电机组合,最大功率为316kW,最大扭矩可以达到655N·m;后驱长续航和后驱超长续航版本车型百公里加速在6.7s,电机最大功率为196kW,最大扭矩390N·m。
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。
③ 何小鹏与马斯克隔空互怼,小鹏汽车备战明年要让特斯拉找不着东
近日正火热的广州车展上,中国造车新势力的代表之一小鹏汽车又有新动作。表示2021年将生产激光雷达提高自动驾驶架构性能的计划,车辆对物体识别性能将会大幅度提升。
被媒体称为“马斯克背后的中国女博士”,回国进入小鹏应该是给马斯克不小的打击。但小鹏也没有做错什么,要成功就需要高端技术研发人员。
写在最后:
特斯拉与小鹏的战争如火如荼,两者互怼对小鹏也有一定的传播性,但Model3的降价给小鹏也带来不小压力,在智能方面小鹏要超过特斯拉也未必容易。从两者年度研发费用特斯拉是小鹏的好几倍,两者发展起步时间前后也有不小差距,所以小鹏要弯道超特斯拉必定要比特斯拉付出更多。
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。
④ 有类似汽车之家的源码么
有的呀,我的那是我客户在用的 商业源码,你要的话可以便宜给你的
⑤ 如何抓取汽车之家的车型库 Python中文社区
实际上,关于“如何抓取汽车之家的车型库”,我已经在“使用 Mitmproxy 分析接口”一文中给出了方法,不过那篇文章里讲的是利用 API 接口来抓取数据,一般来说,因为接口不会频繁改动,相对 WEB 页面而言更稳定,所以通常这是数据抓取的最佳选择,不过利用 API 接口来抓取数据有一些缺点,比如有的数据没有 API 接口,亦可能虽然有 API 接口,但是数据使用了加密格式,此时只能通过 WEB 页面来抓取数据。
既然要通过 WEB 页面来抓取数据,那么就不得不提到Scrapy,它可以说是爬虫之王,我曾经听说有人用 Scrapy,以有限的硬件资源在几天的时间里把淘宝商品数据从头到尾撸了一遍,如此看来,本文用 Scrapy 来抓取汽车之家的车型库应该是绰绰有余的了。
在抓取汽车之家的车型库之前,我们应该对其结构有一个大致的了解,按照网络中的描述,其大致分为四个级别,分别是品牌、厂商、车系、车型。本文主要关注车系和车型两个级别的数据。在抓取前我们要确定从哪个页面开始抓取,比较好的选择有两个,分别是产品库和品牌找车,选择哪个都可以,本文选择的是品牌找车,不过因为品牌找车页面使用了 js 来按字母来加载数据,所以直接使用它的话可能会有点不必要的麻烦,好在我们可以直接使用从A到Z的字母页面。
假设你已经有了 Scrapy 的运行环境(注:本文代码以 Python3 版本为准):
shell> scrapy startproject autohome
shell> cd autohome
shell> scrapy genspider automobile www.autohome.com.cn -t crawl
如此就生成了一个基本的蜘蛛骨架,需要说明的是 Scrapy 有两种蜘蛛,分别是 spider 和 crawl,其中 spider 主要用于简单的抓取,而 crawl 则可以用来实现复杂的抓取,复杂在哪里呢?主要是指蜘蛛可以根据规则萃取需要的链接,并且可以逐级自动抓取。就抓取汽车之家的车型库这个任务而言,使用 spider 就可以实现,不过鉴于 crawl 在功能上更强大,本文选择 crawl 来实现,其工作流程大致如下:通过 start_urls 设置起始页,通过 rules 设置处理哪些链接,一旦遇到匹配的链接地址,那么就会触发对应的 callback,在 callback 中可以使用 xpath/css 选择器来选择数据,并且通过 item loader 来加载 item:
车系
车型
文件:autohome/items.py:
# -*- coding: utf-8 -*-
import scrapy
from scrapy.loader.processors import MapCompose, TakeFirst
class SeriesItem(scrapy.Item):
series_id = scrapy.Field(
input_processor=MapCompose(lambda v: v.strip("/")),
output_processor=TakeFirst()
)
series_name = scrapy.Field(output_processor=TakeFirst())
class ModelItem(scrapy.Item):
model_id = scrapy.Field(
input_processor=MapCompose(lambda v: v[6:v.find("#")-1]),
output_processor=TakeFirst()
)
model_name = scrapy.Field(output_processor=TakeFirst())
series_id = scrapy.Field(output_processor=TakeFirst())
文件:autohome/autohome/spiders/automobile.py:
# -*- coding: utf-8 -*-
import json
import string
from scrapy import Request
from scrapy.http import HtmlResponse
from scrapy.linkextractors import LinkExtractor
from scrapy.loader import ItemLoader
from scrapy.spiders import CrawlSpider, Rule
from urllib.parse import parse_qs, urlencode, urlparse
from autohome.items import ModelItem, SeriesItem
class AutomobileSpider(CrawlSpider):
name = "automobile"
allowed_domains = ["www.autohome.com.cn"]
start_urls = [
"" + x + ".html"
for x in string.ascii_uppercase if x not in "EIUV"
]
rules = (
Rule(LinkExtractor(allow=("/\d+/#",)), callback="parse_item"),
)
def parse(self,response):
params = {
"url": response.url,
"status": response.status,
"headers": response.headers,
"body": response.body,
}
response = HtmlResponse(**params)
return super().parse(response)
def parse_item(self, response):
sel = response.css("div.path")
loader = ItemLoader(item=SeriesItem(), selector=sel)
loader.add_css("series_id", "a:last-child::attr(href)")
loader.add_css("series_name", "a:last-child::text")
series = loader.load_item()
# 即将销售 & 在售
for sel in response.css("div.interval01-list-cars-infor"):
loader = ItemLoader(item=ModelItem(), selector=sel)
loader.add_css("model_id", "a::attr(href)")
loader.add_css("model_name", "a::text")
loader.add_value("series_id", series['series_id'])
yield loader.load_item()
# 停售
url = ""
years = response.css(".dropdown-content a::attr(data)")
for year in years.extract():
qs = {
"y": year,
"s": series["series_id"]
}
yield Request(url + "?" + urlencode(qs), self.stop_sale)
def stop_sale(self, response):
data = parse_qs(urlparse(response.url).query)
body = json.loads(response.body_as_unicode())
for spec in body["Spec"]:
yield {
"model_id": str(spec["Id"]),
"model_name": str(spec["Name"]),
"series_id": str(data["s"][0]),
}
把如上两段源代码拷贝到对应的文件里,下面我们就可以让蜘蛛爬起来了:
shell> scrapy crawl automobile -o autohome.csv
抓取的结果会保存到 autohome.csv 里。如果保存到 json 文件中,那么有时候你可能会发现输出的都是 unicode 编码,此时可以设置FEED_EXPORT_ENCODING来解决,如果想保存到数据库中,那么可以使用 Scrapy 的pipeline来实现。
如果你完整读过 Scrapy 的文档,那么可能会记得在spiders一章中有如下描述:
When writing crawl spider rules, avoid using parse as callback, since the CrawlSpider uses the parse method itself to implement its logic. So if you override the parse method, the crawl spider will no longer work.
意思是说,在使用 crawl 的时候,应该避免覆盖 parse 方法,不过本文的源代码中恰恰重写了 parse 方法,究其原因是因为汽车之家的字母页存在不规范的地方:
shell> curl -I h
HTTP/1.1 200 OK
Date: ...
Server: ...
Content-Type: text/html, text/html; charset=gb2312
Content-Length: ...
Last-Modified: ...
Accept-Ranges: ...
X-IP: ...
Powerd-By-Scs: ...
X-Cache: ...
X-Via: ...
Connection: ...
乍看上去好像没什么问题,不过仔细一看就会发现在 Content-Type 中 text/html 存在重复,此问题导致 Scrapy 在判断页面是否是 html 页面时失败。为了修正此问题,我重写了 parse 方法,把原本是 TextResponse 的对象重新包装为 HtmlResponse 对象。通过抓取竟然还帮助汽车之家找到一个 BUG,他们真是应该谢谢我才对。
有时候,为了避免蜘蛛被对方屏蔽,我们需要伪装 User-Agent,甚至通过一些代理服务来伪装自己的 IP,本文篇幅所限,就不多说了,实际上,Scrapy 不仅仅是一个库,更是一个平台,本文涉及的内容只能算是管中窥豹,有兴趣的读者不妨多看看官方文档,此外,网上也有很多例子可供参考。
0 0
⑥ 小鹏“杠”上特斯拉
有意思的是,蔚来汽车CEO李斌在小鹏P7发布会的祝福视频中特别提到:“如果要买SUV可以选蔚来或合创,但如果买轿车,那一定要选P7。”
而在发布会后,何小鹏在微博上转发了一篇名为《小鹏汽车的决战时刻》的文章,同时写道“不是终点,只是新的起点”。
目前来看,虽然双方自动驾驶的诉讼纠纷结果还需等待,但小鹏汽车杠上特斯拉已是事实。希望包括小鹏汽车在内的国内造车新势力们在与特斯拉的竞争中不断进步,带给消费者更多的惊喜。
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。
⑦ 品质赶不上传统车企,拒绝激光雷达技术,特斯拉靠“怼”就能赢
据国外媒体报道,《消费者报告》最近发布了年度可靠性调查报告,备受关注的特斯拉却在所有26个上榜品牌中排名倒数第二。其中,一经推出即成为热门车型的ModelY被曝光存在多项质量问题。
可以推测,激光雷达技术的使用,或将让包括小鹏在内的中国造车新势力在自动驾驶技术上超越特斯拉。甚至不排除由此打开的,是"传统汽车制造商在EV技术上超越特斯拉"的大门。
只是,通过目前特斯拉车主对ModelY车辆品质的吐槽,看到的却是"特斯拉在生产质量和可靠性方面仍然需要追赶传统汽车制造商"的不足。
那么,马斯克和何小鹏的"隔空互怼"谁将成为真正的赢家?似乎早就注定好了结局。
(图片来自于网络,侵权请联系删除)
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。
⑧ 特斯拉起诉小鹏汽车新进展 小鹏将提供代码供第三方调查
财经网汽车讯?关于特斯拉起诉小鹏汽车员工曹广植“商业窃密”一案有了新的进展。
6月4日,有媒体报道,针对小鹏汽车的反对动议,美国北加州(United State District Court Northern District of California)法院认为:小鹏需提交自动驾驶源代码,但是双方要会面商议再决定是否交由中立第三方调查。整体而言,法院对双方的诉求予以部分支持、部分驳回。
对此小鹏汽车对财经网汽车表示,“对于目前的结果,小鹏的立场始终是同意向中立第三方提供源代码以供调查。(法院指令)符合预期,我们对此次结果表示满意。”
公开资料显示,曹光植2017年4月24日正式入职特斯拉,工作期间主要担任“计算机视觉科学家”的职务。
2018年12月期间,曹光植返回国内,前往小鹏汽车总部面试并收到书面录用通知。
2019年1月4日,曹入职小鹏汽车,成为“感知团队负责人”,主要负责“开发和交付用于生产汽车的自动驾驶技术”。
2019年3月21日曹光植被特斯拉起诉。
小鹏和特斯拉最近一次争议的焦点,是双方对于小鹏提交调查资料的范围没谈拢。
小鹏汽车认为,从曹光植入职之日起,到特斯拉提出诉讼之日,也就是2019年1月4日到3月21日,这段曹光植的工作日志可以公开接受检查。
而特斯拉要求小鹏汽车?提供从2018年11月1日起为其自动驾驶汽车技术起草、测试或使用的"所有源代码"(即曹加入小鹏汽车、甚至开始与小鹏汽车面谈之前),包括所有修订、修复和更新。
当时小鹏汽车表示:“特斯拉没有任何基础直接审查小鹏汽车源代码。小鹏汽车的源代码高度保密,对小鹏汽车的业务至关重要。它是小鹏汽车自动驾驶车辆运营的核心, 大量资源已用于创建该源代码,平均有70名工程师在两年多的时间里就这些代码进行了大量工作,至少花费了数千万美元来创建、维护和改进。 它对小鹏汽车的价值是不可估量的。小鹏汽车始终将其视为高度机密,并且仅仅向必须使用它的员工提供。 这根本不是公司会与任何第三方分享的东西,更不会向竞争对手提供。”
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。
⑨ 软件能否定义汽车
到了人类现实世界,影响因素复杂了很多。AI训练需要更强的算力兜底,但散热条件、车载能源的有限供应成为瓶颈。而且,超过1000Tops的算力,仍然很贵、很重、很费电。换句话说,近期而言,我们没有低成本解决办法;而当前,压根没有解决方案,无论成本如何。
软件定义汽车,就是打破汽车作为信息孤岛的存在。和现在硬件为主、软件是花瓶的时代,好比互联网时代与单个PC之比。互联网理论诞生40年之后,公众才享受到它的红利,其基础恰是芯片硬件以摩尔定律进化到低成本互联的时期。
软件的基础一直是硬件,到了汽车上,我们也不应改变看法。至于要多久,要看软件要求的硬件基础,何时能以合理成本提供。(文/《汽车人》黄耀鹏,部分图片来源网络)【版权声明】本文系《汽车人》独家原创稿件,版权为《汽车人》所有。
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。