亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Python實現(xiàn)一鍵批量查詢郵編

 更新時間:2023年08月02日 10:38:59   作者:上景  
這篇文章主要為大家詳細介紹了如何利用Python快速實現(xiàn)查詢excel表格里所有郵編對應(yīng)的地址信息,將輸出的省市縣信息分開放在不同的單元格中,感興趣的可以了解下

第 1 節(jié):導(dǎo)入庫

本節(jié)導(dǎo)入所需的 Python 庫:

  • pandas:用于數(shù)據(jù)操作和使用 Excel 文件。
  • requests:用于向網(wǎng)站發(fā)出 HTTP GET 請求。
  • bs4(BeautifulSoup):用于解析 HTML 內(nèi)容。
  • tqdm:用于在處理郵政編碼期間顯示進度條
import pandas as pd
import requests
from bs4 import BeautifulSoup
from tqdm import tqdm  #列中不能有空值

第 2 節(jié):從網(wǎng)頁中提取元素的函數(shù)

本節(jié)定義了extract_elements以 apostal_code作為輸入的函數(shù)。它使用提供的郵政編碼向網(wǎng)站“ https://www.youbianku.com/ ”發(fā)送 HTTP GET 請求。然后,它使用 BeautifulSoup 解析 HTML 內(nèi)容,并使用 CSS 選擇器從網(wǎng)頁中提取特定元素。如果找到所有必需的元素,則提取并返回它們的文本值;否則,返回 None。

def extract_elements(postal_code):
    url = f"https://www.youbianku.com/{postal_code}"
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")
    element_1 = soup.select_one("#mw-content-text > div.mw-parser-output > div:nth-child(2) > div > span:nth-child(2) > a > span")
    element_2 = soup.select_one("#mw-content-text > div.mw-parser-output > div:nth-child(2) > div > span:nth-child(3) > a > span")
    element_3 = soup.select_one("#mw-content-text > div.mw-parser-output > div:nth-child(2) > div > span:nth-child(4) > a > span")
    if element_1 and element_2 and element_3:
        text_1 = element_1.text
        text_2 = element_2.text
        text_3 = element_3.text.replace(f"{text_1}{text_2}", "")
        return text_1, text_2, text_3
    else:
        return None

第 3 節(jié):輸入和輸出文件路徑

在本節(jié)中,指定輸入和輸出文件路徑。input_file保存輸入 Excel 文件的路徑,同時output_file保存將創(chuàng)建的輸出 Excel 文件的路徑。該程序還使用讀取輸入 Excel 文件pd.read_excel()并將“POST”列中的值檢索到postal_codes列表中。

# 讀取Excel文件
input_file = r"C:\Users\aa\Desktop\POST.xlsx"
output_file = r"C:\Users\aa\Desktop\P.xlsx"
df = pd.read_excel(input_file)
# 獲取列名稱為 "POST" 的數(shù)據(jù)
postal_codes = df["POST"].tolist()

第 4 節(jié):處理郵政編碼和存儲結(jié)果

此部分處理列表中的每個郵政編碼postal_codes。它調(diào)用該extract_elements函數(shù)從網(wǎng)站中檢索每個郵政編碼的元素。如果找到元素,它們將與郵政編碼一起存儲在字典中并附加到列表中results。如果未找到元素,則存儲空字符串。顯示進度條tqdm以指示處理進度。最后,results列表被轉(zhuǎn)換為 pandas DataFrame output_df。

# 處理郵政編碼并將結(jié)果存儲在新的DataFrame中
results = []
with tqdm(total=len(postal_codes), desc="Processing") as pbar:
    for postal_code in postal_codes:
        elements = extract_elements(str(postal_code))
        if elements:
            element_1, element_2, element_3 = elements
            results.append({"Postal Code": postal_code, "Element 1": element_1, "Element 2": element_2, "Element 3": element_3})
        else:
            results.append({"Postal Code": postal_code, "Element 1": "", "Element 2": "", "Element 3": ""})
        pbar.update(1)
output_df = pd.DataFrame(results)

第 5 節(jié):將結(jié)果保存到輸出文件

在本節(jié)中,DataFrame將保存到使用output_df指定的輸出 Excel 文件中。該參數(shù)確保行索引不包含在輸出中,打印消息“查詢完畢”(查詢完成),表明程序已經(jīng)執(zhí)行完畢。

# 將結(jié)果保存到新的Excel文件中
output_df.to_excel(output_file, index=False)
# 輸出查詢完畢字樣
print("查詢完畢")

第 6 節(jié):代碼總結(jié)

1.從網(wǎng)頁中提取特定元素:代碼使用requests庫發(fā)送HTTP GET請求,通過BeautifulSoup庫解析TML內(nèi)容,并使用CSS選擇器從網(wǎng)頁中提取特定元素。這些元素可能包含在給定的郵政編碼對應(yīng)的網(wǎng)頁中。如果成功到提取所有所需元素后,則將它們的值存儲起來,以供后續(xù)處理。

2.處理郵政編碼數(shù)據(jù):代碼讀取輸入的Excel文件,獲取包含郵政編碼的列數(shù)據(jù)。然后,對每個郵政編碼進行處理,調(diào)用提取元素的函數(shù),把提取到的元素及對應(yīng)的郵政編碼存儲中結(jié)果列表中。如果某個郵政編碼無法提取到所需元素,則將空字符串存儲占位符。整個處理過程中,通過使用庫顯示細節(jié)條,提供處理細節(jié)的可視化tqdm。

3.將結(jié)果保存到Excel文件:將處理得到的結(jié)果列表轉(zhuǎn)換為pandasDataFrame,然后將其保存到指定的輸出Excel文件中。最終,代碼打印出“查詢完畢”的提示信息,表示程序執(zhí)行完畢。

第 7 節(jié):代碼運行實例

輸入文件:

輸出文件(省市縣是分開輸出的):

完整程序

import pandas as pd
import requests
from bs4 import BeautifulSoup
from tqdm import tqdm  #列中不能有空值
def extract_elements(postal_code):
    url = f"https://www.youbianku.com/{postal_code}"
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")
    element_1 = soup.select_one("#mw-content-text > div.mw-parser-output > div:nth-child(2) > div > span:nth-child(2) > a > span")
    element_2 = soup.select_one("#mw-content-text > div.mw-parser-output > div:nth-child(2) > div > span:nth-child(3) > a > span")
    element_3 = soup.select_one("#mw-content-text > div.mw-parser-output > div:nth-child(2) > div > span:nth-child(4) > a > span")
    if element_1 and element_2 and element_3:
        text_1 = element_1.text
        text_2 = element_2.text
        text_3 = element_3.text.replace(f"{text_1}{text_2}", "")
        return text_1, text_2, text_3
    else:
        return None
# 讀取Excel文件
input_file = r"C:\Users\aa\Desktop\POST.xlsx"
output_file = r"C:\Users\aa\Desktop\P.xlsx"
df = pd.read_excel(input_file)
# 獲取列名稱為 "POST" 的數(shù)據(jù)
postal_codes = df["POST"].tolist()
# 處理郵政編碼并將結(jié)果存儲在新的DataFrame中
results = []
with tqdm(total=len(postal_codes), desc="Processing") as pbar:
    for postal_code in postal_codes:
        elements = extract_elements(str(postal_code))
        if elements:
            element_1, element_2, element_3 = elements
            results.append({"Postal Code": postal_code, "Element 1": element_1, "Element 2": element_2, "Element 3": element_3})
        else:
            results.append({"Postal Code": postal_code, "Element 1": "", "Element 2": "", "Element 3": ""})
        pbar.update(1)
output_df = pd.DataFrame(results)
# 將結(jié)果保存到新的Excel文件中
output_df.to_excel(output_file, index=False)
# 輸出查詢完畢字樣
print("查詢完畢")

到此這篇關(guān)于基于Python實現(xiàn)一鍵批量查詢郵編的文章就介紹到這了,更多相關(guān)Python查詢郵編內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論