import requests
import pymysql HOSTNAME = '127.0.0.1'
USERNAME = 'root'
PASSWORD = 'zyndev'
DATABASE = 'zyndev_new' brand = 'http://www.autohome.com.cn/ashx/AjaxIndexCarFind.ashx?type=1'
series = 'http://www.autohome.com.cn/ashx/AjaxIndexCarFind.ashx?type=3&value={}'
model = 'http://www.autohome.com.cn/ashx/AjaxIndexCarFind.ashx?type=5&value={}' def obtain_brand_info():
request_brand = requests.get(brand)
if request_brand.status_code == 200:
request_brand.close()
brand_json = request_brand.json()
if brand_json['returncode'] == 0: # 成功
brand_list = brand_json['result']['branditems']
conn = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE, charset="utf8")
cur = conn.cursor()
args = []
for item in brand_list: # 存入数据库 将 dict 转为 list
sub_arg = (item['id'], item['name'], item['bfirstletter'])
args.append(sub_arg)
print(args)
rowcount = cur.executemany('INSERT INTO auto_home_car_brand(brandid,name,bfirstletter) values(%s,%s,%s)', args)
conn.commit()
print(f"插入品牌:\n共{len(brand_dict)}\n成功插入{rowcount}条记录\n插入失败{len(brand_dict) - rowcount}条")
cur.close()
conn.close()
return brand_list
else:
raise Exception("请求失败") def obtain_series(brand_list):
for brand_info in brand_list:
request_series = requests.get(series.format(brand_info['id']))
if request_series.status_code == 200:
request_series.close()
series_json = request_series.json()
if series_json['returncode'] == 0: # 成功
factory_list = series_json['result']['factoryitems']
conn = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE, charset="utf8")
cur = conn.cursor()
args = []
series_count = 0
for factory_item in factory_list:
factory_id = factory_item['id']
factory_name = factory_item['name']
series_items = factory_item['seriesitems']
for series_item in series_items:
series_count = series_count + 1
sub_arg = (brand_info['id'], factory_id, factory_name, series_item['id'], series_item['name'],
series_item['seriesstate'], series_item['seriesorder'])
args.append(sub_arg) rowcount = cur.executemany('''INSERT INTO auto_home_car_series(brand_id, factory_id, `factory_name`,
`series_id`, `series_name`, `series_state`,`series_order`)
values(%s, %s, %s, %s, %s, %s, %s)''',args)
conn.commit()
print(f"插入车系:\n共{series_count}\n成功插入{rowcount}条记录\n插入失败{series_count - rowcount}条")
cur.close()
conn.close() def obtain_model():
conn = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE, charset="utf8")
cur = conn.cursor()
cur.execute("select series_id from auto_home_car_series")
series_list = cur.fetchall() for series in series_list:
request_model = requests.get(model.format(series[0]))
if request_model.status_code == 200:
model_json = request_model.json()
request_model.close()
if model_json['returncode'] == 0: # 成功
year_items = model_json['result']['yearitems']
conn = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE, charset="utf8")
cur = conn.cursor()
args = []
model_count = 0
for year_item in year_items:
for spec_item in year_item['specitems']:
model_count = model_count + 1
sub_args = (series[0], year_item['id'], year_item['name'], spec_item['id'], spec_item['name'],
spec_item['state'], spec_item['minprice'], spec_item['maxprice'])
args.append(sub_args) rowcount = cur.executemany('''INSERT INTO auto_home_car_model(
`series_id`, `year_id`, `year_name`, `model_id`,
`model_name`, `model_state`, `min_price`, `max_price`)
values(%s, %s, %s, %s, %s, %s, %s, %s)''', args)
conn.commit()
print(f"插入车型:\n共{model_count}\n成功插入{rowcount}条记录\n插入失败{model_count - rowcount}条")
cur.close()
conn.close() def main():
#brand_list = obtain_brand_info()
#obtain_series(brand_list)
obtain_model() if '__main__' == __name__:
main()

使用python抓取汽车之家车型数据的更多相关文章

  1. Python 爬取汽车之家口碑数据

    本文仅供学习交流使用,如侵立删!联系方式见文末 汽车之家口碑数据 2021.8.3 更新 增加用户信息参数.认证车辆信息等 2021.3.24 更新 更新最新数据接口 2020.12.25 更新 添加 ...

  2. [Python爬虫] 之十八:Selenium +phantomjs 利用 pyquery抓取电视之家网数据

    一.介绍 本例子用Selenium +phantomjs爬取电视之家(http://www.tvhome.com/news/)的资讯信息,输入给定关键字抓取资讯信息. 给定关键字:数字:融合:电视 抓 ...

  3. 一篇文章教会你用Python抓取抖音app热点数据

    今天给大家分享一篇简单的安卓app数据分析及抓取方法.以抖音为例,我们想要抓取抖音的热点榜数据. 要知道,这个数据是没有网页版的,只能从手机端下手. 首先我们要安装charles抓包APP数据,它是一 ...

  4. 手把手教你用Python抓取AWS的日志(CloudTrail)数据

    数据时代,利用数据做决策是大数据的核心价值. 本文手把手,教你使用python进行AWS的CloudTrail配置,进行日志抓取.进行数据分析,发现数据价值! 如今是云的时代,许多公司都把自己的IT架 ...

  5. 浅谈如何使用python抓取网页中的动态数据

    我们经常会发现网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念, 动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到 ...

  6. python抓取网页中的动态数据

    一.概念 网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念,动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到浏览器 ...

  7. Python抓取淘宝IP地址数据

    def fetch(ip): url = 'http://ip.taobao.com/service/getIpInfo.php?ip=' + ip result = [] try: response ...

  8. python抓取NBA现役球员基本信息数据

    链接:http://china.nba.com/playerindex/ 所需获取JSON数据页面链接:http://china.nba.com/static/data/league/playerli ...

  9. python抓取NBA现役球员基本信息数据并进行分析

    链接:http://china.nba.com/playerindex/ 所需获取JSON数据页面链接:http://china.nba.com/static/data/league/playerli ...

随机推荐

  1. C# 类的解构

    C#对类的解构,必须在该类内实现Deconstruct方法,并且返回类型为void ,并用out参数返回各个部分. using System; using System.Text; namespace ...

  2. ofo小黄车做信息流!这到底算怎么回事?

    不得不说,现在ofo绝对处于商业处境和舆论的风口浪尖上.近段时间以来,ofo各种大动作实在是让业界和大众都"看不懂".但毋庸置疑的是,ofo的种种举措都是为了"自救&qu ...

  3. python基础——异常处理及断言

    python常见的异常类型? 异常有很多种类型,常见的由语法错误(SyntaxError).类型错误(TypeError).名字错误(NameError)等等,但我们要知道的是异常本身就是一个类的实例 ...

  4. Linux基础篇二:Bash shell(壳,命令解释器)介绍

    shell执行方式: 第一:输入命令  (简单工作) 第二:   脚本  (适合大量工作) Bash shell 实际上的叫法是  GNU/Bash    如何查询呢:  bash - version ...

  5. mysql之左连接、右连接、内连接、全连接、等值连接、交叉连接等

    mysql中的各种jion的记录,以备用时查 1.等值连接和内连接, a.内连接与等值连接效果是相同的,执行效率也相同,只是书写方式不一样,内连接是由SQL 1999规则定的书写方式 比如: sele ...

  6. 调用其他VBA工程中的过程和函数以及API函数

    Excel VBA中,同一个应用程序下面包括多个工作簿,每个工作簿都有自己独立的VBAProject 在同一个VBA工程中,使用Call即可调用其他模块中的过程和函数,例如: Call Module2 ...

  7. The file named error_log is too large

    The file named errorlog is too large */--> The file named errorlog is too large 1 Problem One day ...

  8. Spring Security Config : 注解 EnableWebSecurity 启用Web安全

    https://blog.csdn.net/andy_zhang2007/article/details/90023901

  9. WebService如何根据WSDL文件转换成本地的C#类

    WebService有两种使用方式,一种是直接通过添加服务引用,另一种则是通过WSDL生成. 添加服务引用大家基本都用过,这里就不讲解了. 那么,既然有直接引用的方式,为什么还要通过WSDL生成呢? ...

  10. Excel-DNA开发包:ExcelDna-0.34.6.zip下载

    Excel-DNA可以用VB.Net或C#开发Excel自定义函数.制作.xll格式的加载宏. 点此下载 ExcelDna-0.34.6.zip