python爬虫快递100运单物流信息

有如下物流单号和客户信息(实际数据有几千上万条),公司后台数据excel。
| 物流单号 | 客户电话后4位 |
| JDVD04509351892 | 0857 |
| DPK364220348292 | 2453 |
| SF1661660397727| 4680 |
需求:使用PYTHON在快递100上遍历出所有物流单号的路由信息,顺丰需要填写电话后4位验证,其他的京东、德邦不需要

img


生成新的excel为:
| 物流单号 | 客户电话后4位 |时间|操作
| JDVD04509351892 | 0857 |2023.08.1211:48|运输中,到达北京海淀区西四环北路经营分部
| JDVD04509351892 | 0857 |2023.08.1210:21|运输中,离开【房山转运中心】,下一部门【北京海淀区西四环北路经营分部】。

【以下回答由 GPT 生成】

我可以提供一种基于Python的解决方案来实现你的需求。首先,你需要安装一些必要的库。

Step 1: 安装所需库 你需要安装以下库: - pandas:对Excel进行读取和写入操作 - requests:发送HTTP请求和接收响应 - bs4:解析HTML页面

你可以使用以下命令安装这些库:

pip install pandas requests bs4

Step 2: 编写爬虫程序

接下来,你需要编写一个爬虫程序,从快递100网站获取每个物流单号的路由信息。

import pandas as pd
import requests
from bs4 import BeautifulSoup

# 读取Excel文件
data = pd.read_excel("物流单号.xlsx")

# 创建一个空的DataFrame用于存储最终的结果
result = pd.DataFrame(columns=["物流单号", "客户电话后4位", "时间", "操作"])

# 遍历每一行数据
for index, row in data.iterrows():
    tracking_number = row["物流单号"]
    last_four_digits = str(row["客户电话后4位"])

    # 构造查询URL
    url = f"https://www.kuaidi100.com/chaxun?com={tracking_number}&nu={tracking_number}&phone={last_four_digits}"

    # 发送HTTP GET请求并解析返回的HTML页面
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")

    # 提取路由信息
    route_info = soup.find_all("div", class_="wl-detail-item")

    # 解析每个路由信息并存储到DataFrame中
    for info in route_info:
        time = info.find("span", class_="time").text
        operation = info.find("span", class_="info").text

        result = result.append({"物流单号": tracking_number, "客户电话后4位": last_four_digits, "时间": time, "操作": operation}, ignore_index=True)

# 保存结果到新的Excel文件
result.to_excel("物流信息.xlsx", index=False)

Step 3: 替换Excel文件名

以上代码中,需要将物流单号.xlsx替换为你实际使用的包含物流单号和客户电话后4位的Excel文件名。

Step 4: 运行程序

保存并运行上述代码,它将遍历Excel文件中的每个物流单号,在快递100网站上获取路由信息,并将结果存储到新的Excel文件物流信息.xlsx中。

请注意,由于快递100网站的反爬虫机制,如果批量爬取数千上万条数据,可能会遇到IP被封禁等问题。如果遇到此类问题,你可以考虑添加代理IP池或者使用分布式爬虫来解决。另外,爬取大量数据可能需要一定时间,你可以根据具体情况进行调整。

希望以上解决方案能够帮助到你!如果有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^