使用Python + selenium爬取51Tracking国际物流订单信息
——以XDP Express订单为例
一、准备数据
见XDP.xlsx存储内容,示例如:
Order
code
ZWAWZT036164
SW17 8SF
ZWAWZT036161
CB6 3UX
二、运行脚本
直接上代码
from selenium import webdriver
import pyautogui
import time
import win32clipboard as w
import win32con
import pandas as pd
class Track(object):
"""51tracking_spider"""
def __init__(self):
self.dr = webdriver.Firefox()
self.dr.maximize_window()
def open_xdp(self, num):
self.dr.get("https://www.51tracking.com/xdp-uk-tracking")
self.dr.find_element_by_xpath('// *[ @ id = "tracknumber"]').click()
pyautogui.typewrite(num, 0.1)
self.dr.find_element_by_xpath('// *[ @ id = "btnSumit"]').click()
def next_open(self, code):
"""
:param num:
:return:
"""
self.dr.find_element_by_xpath('// *[ @ id = "required_field_tracking_ship_date1"]').click()
pyautogui.typewrite(code, 0.1)
self.dr.find_element_by_xpath('// *[ @ id = "btn_reqired_field_form_submit"]').click()
self.dr.find_element_by_xpath('//*[@id="result"]').click()
self.save_file()
def save_file(self):
"""
:param num:
:param value:
:return:
"""
value = self.getText()
with open("XDP Delivery.txt", mode="a", encoding="utf-8") as f:
f.write(value+"\n")
def quit_dr(self):
self.dr.quit()
def getText(self):
w.OpenClipboard()
d = w.GetClipboardData(win32con.CF_UNICODETEXT)
w.CloseClipboard()
return d
if __name__ == '__main__':
data = pd.read_excel(r'XDP.xlsx')
num = list(data['Order'])
code = list(data['code'])
for i in range(len(num)):
t = Track()
try:
t.open_xdp(num[i])
t.next_open(code[i])
t.quit_dr()
except Exception as e:
print(f"此次任务出错,错误信息为:{e}")
print(f"错误单号为:{num[i]}")
try:
t.quit_dr()
except:
continue
三、爬取数据
爬取数据截图
原文链接:https://blog.csdn.net/weixin_44562468/article/details/106693494