python 日产经销商
'''
ajaxCallSiteInfo: {1C8B2BC6-35E2-460E-A63D-3576F3039D79}
'''
import requests
import json
from dbutil.pgsql import PgsqlPipeline
from datetime import date
headers = {
'Cookie': 'ASP.NET_SessionId=citapgvmwpvq4qscezfwqjwr; NTKF_T2D_CLIENTID=guest8EE3B5EE-2EEE-0022-B9B6-F4D65DCFD295; nTalk_CACHE_DATA={uid:kf_9255_ISME9754_guest8EE3B5EE-2EEE-00,tid:1567475785166484}; sc_ext_session=kr5rhbkw4ldkmlstifvmj152; nissan#lang=zh-CN; SC_ANALYTICS_GLOBAL_COOKIE=5b20d0477cfd4924913d8cce649b25ab|True; sc_ext_contact=5b20d0477cfd4924913d8cce649b25ab|True; NO_PAGE_DURATION=2019/9/3 21:18:07; no_screen=1280%7C800; Place=%7B%22province%22%3A%22%E6%B2%B3%E5%8C%97%22%2C%22city%22%3A%22%E7%9F%B3%E5%AE%B6%E5%BA%84%22%7D',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
}
#读取cities.json文件取出省,市
def get_data():
with open("./dbutil/cities.json", 'r') as load_f:
data_list = json.load(load_f)['provinces']
return data_list
#post请求 获取json文件
def get_Dealers(citysName):
url = 'https://www.dongfeng-nissan.com.cn/Nissan/ajax/Distributor/GetJsonDistributorList'
data = {'city': citysName}
response = requests.post(url, headers=headers, data=data, verify=False)
dealers = json.loads(response.text)['data']['DealerInfos']
return dealers
#解析json文件
def get_item(dealer, province_Name, citysName):
item = {
"dealer_name": dealer["StoreName"],
"brand_id": None,
"address": dealer["Address"],
"brand": "日产",
"province": province_Name,
"city": citysName,
"sale_call": dealer["SaleTel"],
"customer_service_call": dealer["ServiceTel"],
"update_time": date.today(),
"longitude": dealer['Longitude'],
"latitude": dealer['Latitude'],
"dealer_type": None,
"manufacturer_id": None,
"manufacturer": "东风日产",
"state": None,
"opening_date": None,
"close_date": None,
"dealer_id_web": None,
"controlling_shareholder": None,
"other_shareholders": None,
"status": None,
"remarks": None,
}
return item
#实例化函数返回items
def get_items():
items = []
data_list = get_data()
for data in data_list:
# print(data)
province_Name = data['provinceName']
citys = data['citys']
for city in citys:
citysName = city['citysName']
dealers = get_Dealers(citysName)
for dealer in dealers:
item = get_item(dealer, province_Name, citysName)
items.append(item)
return items
#主进程存储
def main():
print('爬虫开始--------->')
items = get_items()
print('数据存储')
pg = PgsqlPipeline()
for item in items:
pg.process_item(item)
pg.close()
print('数据存储完成')
if __name__ == '__main__':
main()
import psycopg2 class PgsqlPipeline(object):
def __init__(self):
self.conn = psycopg2.connect(database="dealer", user="postgres", password="postgres", host="127.0.0.1", port="")
self.cursor = self.conn.cursor()
def process_item(self, item):
insert_sql = f"""INSERT INTO "201905.tDealer"
("sDealerName","nBrandID","sBrand","sProvince","sCity","sAddress","sSaleCall","sCustomerServiceCall","sDealerType","nManufacturerID","sManufacturer","nState","dOpeningDate","dCloseDate","dUpdateTime","nDealerIDWeb","sLongitude","sLatitude","sControllingShareholder","sOtherShareholders","sStatus","sRemarks")
VALUES (%(dealer_name)s, %(brand_id)s, %(brand)s, %(province)s, %(city)s, %(address)s, %(sale_call)s, %(customer_service_call)s, %(dealer_type)s, %(manufacturer_id)s,%(manufacturer)s, %(state)s, %(opening_date)s, %(close_date)s, %(update_time)s, %(dealer_id_web)s, %(longitude)s, %(latitude)s, %(controlling_shareholder)s, %(other_shareholders)s, %(status)s, %(remarks)s)""" self.cursor.execute(insert_sql, item)
self.conn.commit()
def close(self):
self.cursor.close()
self.conn.close()
if __name__ == '__main__':
pgsql = PgsqlPipeline()
print(pgsql)
python 日产经销商的更多相关文章
- python 丰田经销商
import requests import json from dbutil.pgsql import PgsqlPipeline from datetime import date headers ...
- 长安铃木经销商爬取(解析xml、post提交、python中使用js代码)
1.通过火狐浏览器,查找大长安铃木官网中关于经销商的信息主要在两个网页中 http://www.changansuzuki.com/khfw/xml/pro.xml 地域信息 http://www. ...
- Python 爬虫实例(15) 爬取 汽车之家(汽车授权经销商)
有人给我吹牛逼,说汽车之家反爬很厉害,我不服气,所以就爬取了一下这个网址. 本片博客的目的是重点的分析定向爬虫的过程,希望读者能学会爬虫的分析流程. 一:爬虫的目标: 打开汽车之家的链接:https: ...
- 利用 Python 只连接一次 MySQL
Github 地址 项目背景 最近做个项目,需要进行试驾分析,所谓"试驾",是指顾客在 4S 店指定人员的陪同下,沿着指定的路线驾驶车辆,从而了解这款汽车的行驶性能和操控性能.通常 ...
- Python静态代码检查工具Flake8
简介 Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强.Flake8是对 ...
- Python算法——《算法图解》笔记
算法目录 二分查找 大O表示法 选择排序 递归 快速排序,分而治之(D&C) 散列表——字典 广度优先搜索——BFS Dijkstra算法 贪婪算法 二分查找 # 要求list是有序表,num ...
- day_02~day_09的Python语法基础
Python基础学习 day_02 使用方法修改字符串的大小写 将字符串首字母变成大写 >>> name = "ada lovelace" >>> ...
- Python课程笔记(十一)
一.线程与多线程 1.线程与进程 线程指的是 进程(运行中的程序)中单一顺序的执行流. 多个独立执行的线程相加 = 一个进程 多线程程序是指一个程序中包含有多个执行流,多线程是实现并发机制的一种有效手 ...
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
随机推荐
- ln创建软链接方式
ln -s 目标文件 软链接
- Maya2017下载安装与激活
目录 1. 更多推荐 2. 下载地址 2.1. OneDrive 2.2. 百度云 3. 安装激活步骤 1. 更多推荐 其他Maya版本的下载与激活:https://www.cnblogs.com/c ...
- 使用Python和AWK两种方式实现文本处理的长拼接案例
最近由于业务系统新需求的需要,我们平台需要将供应商G提供一类数据转换格式后提供给客户K.比较头疼是供应商G提供的数据都是在Windows下使用Excel存储的,而客户K先前与我们相关对接人员商定的数据 ...
- Spring3.x 升级至 Spring4.x 详解
1 升级依赖包 1.1 Maven 项目 1.1.1 更新 spring 依赖版本 打开 pom.xml,把所有 spring3.x 的版本号更新为 spring4.x.建议使用属性配置,形如: &l ...
- service-resources
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- eclipse 报错:One or more constraints have not been satisfied.
接受 我有同样的问题.在我的maven项目中添加速度依赖关系后,我在标记选项卡中得到相同的错误.然后我注意到maven项目创建的web.xml文件具有servlet2.3模式.当我将其更改为servl ...
- 在linux中 部署 mongo 数据库服务端
1 首先需要一台linux服务器(我用的redhat linux,其它的也大同小异), 玩一玩的话,推荐亚马逊上面去创建一个免费的linux服务器,有关具体创建linux服务器不在这赘述. https ...
- Leetcode_131. Palindrome Partitioning_[DFS]
题目链接 Given a string s, partition s such that every substring of the partition is a palindrome. Retur ...
- JS对象、原型、this学习总结
1.对象是函数创建的,而函数却又是一种对象.(属性的集合) 2.每个函数都有一个属性叫做prototype.这个prototype的属性值是一个对象,默认的只有一个constructor的属性,指向这 ...
- php面试专题---22、网站优化 总结
php面试专题---22.网站优化 总结 一.总结 一句话总结: 主要从前端.后端.数据库.资源四个方面开始发散 前端浏览器缓存和数据压缩前端优化(减少HTTP请求次数) 资源流量优化(防盗链处理)C ...