公众号后台回复“图书“,了解更多号主新书内容
作者:叶庭云
来源:快学Python
希望你拼命争取的,最后都能如你所愿。
一、分析网页
快递100网站可以很方便的查询快递的物流信息
![](https://i-blog.csdnimg.cn/blog_migrate/f08890ab573d1183946654e4e9ba7649.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ec7950441899eb8966f80c185eda575f.png)
二、python代码实现
1. selenium爬虫实现查询
# 根据快递单号查询物流信息
def get_screenshot_and_info():
chrome_driver = r'D:\python\pycharm2020\chromedriver.exe' # chromedriver的路径
options = webdriver.ChromeOptions()
# 关闭左上方 Chrome 正受到自动测试软件的控制的提示
options.add_experimental_option('useAutomationExtension', False)
options.add_experimental_option("excludeSwitches", ['enable-automation'])
# 开启浏览器对象
browser = webdriver.Chrome(options=options, executable_path=chrome_driver)
# 访问这个url
browser.get('https://www.kuaidi100.com/')
# 显示等待
wait = WebDriverWait(browser, 5)
wait.until(ec.presence_of_element_located((By.ID, 'menu-track')))
# 窗口最大化
browser.maximize_window()
browser.find_element_by_name('postid').send_keys(nums)
browser.find_element_by_id('query').click()
time.sleep(1)
browser.find_element_by_id('query').click()
time.sleep(2)
browser.execute_script("window.scrollBy(0, 488)")
# 截图
browser.get_screenshot_as_file(filename='info.png')
items = browser.find_elements_by_xpath('//table[@class="result-info"]/tbody/tr')
print('物流信息查询结果如下:\n')
for item in items:
time_ = item.find_element_by_xpath('.//td[1]').text.replace('\n', ' ')
contex = item.find_element_by_xpath('.//td[3]').text
print(f'时间:{time_}')
print(f'状态:{contex}\n')
browser.quit()
# 显示截图
src = cv.imread(filename='info.png')
src = cv.resize(src, None, fx=0.7, fy=0.7)
cv.imshow('result', src)
cv.waitKey(0)
运行效果如下:
2. requests爬虫实现查询
def query_info(i, j):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24',
"Referer": "https://www.kuaidi100.com/"
}
url = f'https://www.kuaidi100.com/query?type={j}&postid={i}&temp=0.53162373256954096&phone='
resp = requests.get(url, headers=headers)
# print(resp.text)
datas = json.loads(resp.text)['data']
# print(datas)
print('您的快递物流信息查询结果如下:\n')
for item in datas:
time_ = item['time']
info = item['context']
print(f'时间:{time_}')
print(f'物流状态:{info}' + '\n')
运行结果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/04228e4a33e28c2fbfb8267e900630ce.png)
requests爬虫查询速度较快,但需要输入快递公司,便于构造接口url来请求查询。
◆ ◆ ◆ ◆ ◆
麟哥新书已经在京东上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前京东正在举行活动,大家可以用原价5折的预购价格购买,还是非常划算的:
点击下方小程序即可进入购买页面:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 麟哥拼了!!!亲自出镜推荐自己新书《数据分析师求职面试指南》● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗