ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5905|回复: 54

[求助] 用VBA按网页下拉框指定期号抓取所需内容

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-12-1 12:24 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 WYS67 于 2018-12-1 13:12 编辑

20181201115421.png 20181201124301.png
开奖历史 下拉框.zip (644.3 KB, 下载次数: 15)


江苏快三开奖历史数据.zip (11.9 KB, 下载次数: 23)

请教高手大神们:想按附件E列的说明和要求,抓取指定网页下拉框里指定期号范围的所有数据,用VBA能不能实现?
抓取出的数据存放在A:C列里,如下图所示:
20181201131119.png



TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-1 13:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
希望大神们写出代码。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-1 15:49 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-1 16:51 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-1 19:11 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-1 20:22 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-1 21:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-1 22:54 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-2 01:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
难道VBA无法抓取下拉框里逐个指定期号包括的数据内容吗?

TA的精华主题

TA的得分主题

发表于 2018-12-2 06:25 | 显示全部楼层
WYS67 发表于 2018-12-1 22:54
恳请大神们帮忙写出代码

python3.7 高并发异步爬虫
抓取 2015-11-03 到 2018-12-01 的数据并写入Excel,总计运行时间在30秒内完成!
  1. # -*- coding: utf-8 -*-
  2. import asyncio, aiohttp
  3. import async_timeout, time, re
  4. import pandas as pd
  5. #信号量,控制协程数,防止爬取太快!
  6. headers = {"User-Agent": "(KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6"}
  7. async def get_html(url,sess):
  8.     with async_timeout.timeout(20):#设置请求的最长时间为20s
  9.         async with sess.get(url, headers=headers) as res:
  10.             if res.status == 200:
  11.                 text = await res.text(encoding='gb2312')
  12.                 return text

  13. async def crawl_spder(url):
  14.     async with aiohttp.ClientSession() as sess:
  15.         text = await get_html(url,sess)
  16.         parse_html(text)

  17. def parse_html(text):
  18.     global df
  19.     if text:
  20.         data_list = r.findall(str(text))
  21.         df = df.append(data_list)

  22. def crawl():
  23.     date_list = pd.date_range('2015-11-03', '2018-12-01')
  24.     date_list = [pd.Timestamp(x).strftime("%Y%m%d") for x in date_list.values]
  25.     start_url = 'http://kaijiang.500.com/static/info/kaijiang/xml/jsk3/{}.xml?_A=UAHNMCOE{}'
  26.     tasks = [crawl_spder(start_url)]
  27.     for data in date_list:
  28.         rand_time = str(int(round(time.time() * 1000)))
  29.         url = start_url.format(data, rand_time)
  30.         tasks.append(crawl_spder(url))

  31.     loop = asyncio.get_event_loop()
  32.     loop.run_until_complete(asyncio.wait(tasks))
  33.     loop.close()

  34. if __name__ == '__main__':
  35.     t = time.time()
  36.     r = re.compile(r'<row\s*expect="(\d+)"\s*opencode="([^"]+)"\s*opentime="([^"]+)"\s*/>')
  37.     df = pd.DataFrame()
  38.     crawl()
  39.     with pd.ExcelWriter(r'output.xls') as writer: # 写入Excel文件,可以更改文件路径
  40.         df.columns = ['期号', '号码', '时间']
  41.         df.to_excel(writer, 'Sheet1', index=False, header=True)
  42.     print(time.time()-t)
复制代码

评分

3

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 10:07 , Processed in 0.036576 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表