1. 程式人生 > >使用python抓取汽車之家車型資料

使用python抓取汽車之家車型資料

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汽車車型資料

import requests import pymysql HOSTNAME = '127.0.0.1' USERNAME = 'root' PASSWORD = 'zyndev' DATABASE = 'zyndev_new' brand = 'ht

java 開發用到網路爬蟲,汽車網站全部資料經歷

經歷了兩個禮拜的折騰,某某知名網站的資料終於到手了。犯罪沒被發現這種心情感覺很爽。 說一下我的犯罪經歷,之前公司總是抓取某某網站資料,可能是被發現了。某某網站改變了策略。通過各種技術終止了我們的行為,導致我們的抓取功能報錯,逐步跟蹤,發現我們之前是在人家的網站,通過Webh

使用Java解析汽車車型配置資料

因為公司業務需求,需要獲取汽車之家的車型配置資料如下圖:        由於汽車之家沒做防爬策略,只是資料給混淆了,這裡主要說解析資料。        通過儲存頁面,配置項的資料是通過JS動態生成的。在頁面的第572行左右,有配置項的json格式資料        主要的配置

python爬蟲實戰 爬汽車車型價格

相關庫 import pymysql import pymysql.cursors from bs4 import BeautifulSoup import requests import random

汽車店鋪資料 DotnetSpider實戰[一]

一、背景春節也不能閒著,一直想學一下爬蟲怎麼玩,網上搜了一大堆,大多都是Python的,大家也比

python入門-----爬汽車新聞,---自動登錄抽屜並點贊,

ike color div標簽 pla spa art com col 3-9 爬取汽車之家新聞,代碼如下 import requests res=requests.get(url=‘https://www.autohome.com.cn/news/‘) #向汽車直接

python3 爬汽車所有車型操作步驟

  題記:   網際網路上關於使用python3去爬取汽車之家的汽車資料(主要是汽車基本引數,配置引數,顏色引數,內飾引數)的教程已經非常多了,但大體的方案分兩種:   1.解析出汽車之家某個車型的網頁,然後正則表示式匹配出混淆後的資料物件與混淆後的js,並對混淆後的js使用pyv8進行解析返回

python網路爬蟲爬汽車的最新資訊和照片

實現的功能是爬取汽車之家的最新資訊的連結 題目和文章中的照片 爬蟲需要用到我們使用了 requests 做網路請求,拿到網頁資料再用 BeautifulSoup 進行解析 首先先檢查是否安裝了pip,如果已經安裝了pip,直接pip install requests,pip uninstal

WebMagic爬蟲入門教程(三)爬汽車的例項-品牌車系車型結構等

    本文使用WebMagic爬取汽車之家的品牌車系車型結構價格能源產地國別等;java程式碼備註,只是根據url變化爬取的,沒有使用爬取script頁面具體的資料,也有反爬機制,知識簡單爬取html標籤爬取的網頁:    需要配置pom.xml <!-

python爬蟲——爬汽車新聞

按F12審查一下元素:找到了對應的資訊。而且發現要爬取的圖片都在id=auto-channel-lazyload-article的div標籤下的li標籤裡。 li標籤下的a標籤就是新聞的url;image標籤,src就是獲取圖片的url; 請求圖片地

Python練習 scrapy 爬汽車文章

autohome.py  #spider檔案 # -*- coding: utf-8 -*- import scrapy from Autohome.items import AutohomeItem class AutohomeSpider(scrapy.Spider)

scrapy汽車車型的簡單爬

汽車之家車型的簡單爬取 spider # -*- coding: utf-8 -*- import scrapy from scrapy import Request from mininova.items import carItem import sys r

汽車

ref article brush att split channel odin lazy com import requests from bs4 import BeautifulSoup response = requests.get(‘https://www.aut

汽車北京二手車資訊

爬取汽車之家北京二手車資訊 經測試,該網站:https://www.che168.com/beijing/list/ 反爬機制較低,僅需要偽造請求頭設定爬取速率,但是100頁之後需要登入,登入之後再爬要慎重,一不小心就會永久封號。爬取的資料以各種型別存放,下面展示儲存到mysql資料

汽車口碑資料的爬蟲

一,爬蟲都是具有時效性的,我不知道反爬蟲什麼時候更新,所以失效以後,除非工作需要,否則我也一般會維護。二,移動客戶端網頁一般比電腦的網頁更好爬取,所以這次可以用汽車之家口碑的移動端網頁,用電腦網頁也可以,但是需要在汽車之家論壇反爬蟲的基礎上在進行修改。比較麻煩。三,以這篇口碑為例,在網頁上顯示的最滿意為下圖所

Python3[爬蟲實戰] scrapy爬汽車全站連結存json檔案

昨晚晚上一不小心學習了崔慶才,崔大神的部落格,試著嘗試一下爬取一個網站的全部內容,福利吧網站現在已經找不到了,然後一不小心逛到了汽車之家 (http://www.autohome.com.cn/beijing/) 很喜歡這個網站,女人都喜歡車,更何況男人呢。(

Java爬蟲初體驗:簡單IT熱評(整合Spring Boot+Elasticsearch+Redis+Mybatis)

爬取主程式 使用Jsoup解析網頁原始碼 @Component public class WebCrawler { private static final String encoding = "utf-8"; @Autowired

汽車店鋪數據 DotnetSpider實戰[一]

@class 詳情 nbsp 實體 比較 request else post 好的 一、背景 春節也不能閑著,一直想學一下爬蟲怎麽玩,網上搜了一大堆,大多都是Python的,大家也比較活躍,文章也比較多,找了一圈,發現園子裏面有個大神開發了一個DotNetSpider的開源

汽車店鋪數據 DotnetSpider實戰

xv6 pan req time 大神 -i xib lac context 一、背景 春節也不能閑著,一直想學一下爬蟲怎麽玩,網上搜了一大堆,大多都是Python的,大家也比較活躍,文章也比較多,找了一圈,發現園子裏面有個大神開發了一個DotNetSpider的開源庫,

汽車資料:文章連結//圖片//標題

(1)打印出來的東西亂碼,如何處理這個問題? import requests response=requests.get( url='https://www.autohome.com.cn/beijing/' #最新的地址是可以出來的 # url='https://