日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python随机生成车牌_使用Python自动化获取全国每个城市的车牌代码

發布時間:2025/4/16 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python随机生成车牌_使用Python自动化获取全国每个城市的车牌代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近有這樣一需求,需要獲取12123交管查詢網站上的全國每個城市對應的城市id和車牌代碼。最初的想法是直接用Python寫個爬蟲,遍歷每個城市,然后用Xpath提取DOM節點數據就好了。然而在實際操作中發現城市id的DOM節點如果用簡單的獲取網頁數據的爬蟲是取不到id值的,這個城市id值必須用瀏覽器打開的方式去訪問,然后網站的js腳本再動態的將城市id插入DOM節點。于是乎想到了用自動化測試工具來做,使用selenium庫來操作webdriver,驅動Chrome瀏覽器進行自動化操作。

由于這個網站有一點特殊,并沒有在同一個頁面中有全部城市的id和車牌代碼,每個城市都是一個單獨的二級域名鏈接。并且城市id使用js動態加載,所以這里就用蠢一點的方法,自動獲取到每個城市的鏈接,然后用瀏覽器自動化模式去逐個訪問再Xpath提取出內容。

當然,這里的重復勞動力交給計算機就好,我們只需要把程序寫好。

使用Chrome瀏覽器打開12123的城市列表選擇頁面 http://m.12123.com/city.html

右鍵,審查元素,發現所有的城市都在ul 的 li標簽下。

只需要把li的元素Xpath拷貝出來,提取到城市列表后遍歷每個列表的鏈接,再用瀏覽器自動化去訪問每個城市的鏈接,最后用相同的方法提取出數據即可。

拷貝出來的Xpath如下

1/html/body/div[2]/div[3]/ul/li

用Xpath的方式有個好處就是不需要寫復雜的正則表達式就可以快速提取到DOM元素的數據。

我要實現的功能:

自動獲取全國所有的城市對應的id和車牌代碼

將獲取到的數據寫入到文件,輸出為SQL的insert語句

全部代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62"""

12123.com 交管查詢助手

獲取所有的 城市名稱+城市車牌代碼+城市id

生成SQL insert語句

create by 藍士欽 2018-06-10

"""

import requests

from lxml import etree

from selenium import webdriver

import datetime

# 12123.com 交管查詢網站移動版網址

HOST_URL = 'http://m.12123.com'

def get_city_info(file_name):

# 請求城市列表頁面,并用xpath提取所有的城市列表集合

html = requests.get(HOST_URL + '/city.html')

select = etree.HTML(html.text)

content = select.xpath('/html/body/div[2]/div[3]/ul/li')

# 打開指定文件,準備將請求到的數據寫入到文件中

file = open(file_name, 'w')

# 遍歷所有的城市列表集合

for index, value in enumerate(content):

# 提取當前城市列表中的a標簽的城市鏈接

item = value.xpath('/html/body/div[2]/div[3]/ul/li[' + str(index) + ']/a/@href')

for city_path in item:

city_url = HOST_URL + city_path

print('當前城市鏈接:' + city_url)

try:

# 打開Chrome瀏覽器,自動化訪問城市鏈接

browser = webdriver.Chrome()

browser.get(url=city_url)

# 提取城市名稱、城市車牌代碼、城市id

city_name = browser.find_element_by_xpath('/html/body/div[4]/div[1]/a/span').text

car_num_pre = browser.find_element_by_xpath('//*[@id="txtAbbr"]').text + browser.find_element_by_xpath(

'//*[@id="txtInitial"]').text

city_id = browser.find_element_by_xpath('//*[@id="cityId"]').get_attribute('value')

print('城市名稱:' + city_name + ' 車牌代碼:' + car_num_pre + ' 城市id:' + city_id)

# 寫入文件

file.writelines("insert into city_info ('city_name','car_num_pre','city_id') "

+ "values ('" + city_name + "','" + car_num_pre + "','" + city_id + "');\n")

# 刷新緩沖區,將緩沖區數據寫入文件,防止緩沖區有大量待寫入數據時突然斷電造成數據丟失

file.flush()

# 關閉瀏覽器

browser.close()

except:

print('獲取城市信息時發生異常')

continue

# 關閉文件流

file.close()

if __name__ == '__main__':

start_time = datetime.datetime.now()

# 獲取城市名稱、車牌代碼、城市id,并寫入指定的sql文件中

get_city_info("city_info.sql")

end_time = datetime.datetime.now()

print('總用時:' + str((end_time - start_time).seconds) + '秒')

點擊運行之后就可以放心的出去玩了😋

控制臺這邊對每個鏈接的訪問情況做了輸出,如果有異常(網絡超時)可以等全部結束后單獨把異常的城市再跑一邊即可。

最后輸出的SQL文件如下圖:

注: 使用WebDriver前,需要將對應平臺的webdriver驅動復制到系統環境變量中。

總結

以上是生活随笔為你收集整理的python随机生成车牌_使用Python自动化获取全国每个城市的车牌代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。