欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

本節(jié)定義了extract_elements以 apostal_code作為輸入的函數(shù)。它使用提供的郵政編碼向網(wǎng)站“ https://www.youbianku.com/ ”發(fā)送 HTTP GET 請(qǐng)求。然后,它使用 BeautifulSoup 解析 HTML 內(nèi)容,并使用 CSS 選擇器從網(wǎng)頁(yè)中提取特定元素。如果找到所有必需的元素,則提取并返回它們的文本值;否則,返回 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 文件的路徑,同時(shí)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)
# 獲取列名稱(chēng)為 "POST" 的數(shù)據(jù)
postal_codes = df["POST"].tolist()

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

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

# 處理郵政編碼并將結(jié)果存儲(chǔ)在新的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ù)確保行索引不包含在輸出中,打印消息“查詢(xún)完畢”(查詢(xún)完成),表明程序已經(jīng)執(zhí)行完畢。

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

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

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

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

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

第 7 節(jié):代碼運(yùn)行實(shí)例

輸入文件:

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

完整程序

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)
# 獲取列名稱(chēng)為 "POST" 的數(shù)據(jù)
postal_codes = df["POST"].tolist()
# 處理郵政編碼并將結(jié)果存儲(chǔ)在新的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)
# 輸出查詢(xún)完畢字樣
print("查詢(xún)完畢")

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

相關(guān)文章

最新評(píng)論