注册 登录
编程论坛 Python论坛

【求助】通过EXCEL表内链接,获取对应数据到excel

leoparddi 发布于 2020-05-20 11:13, 1742 次点击
只有本站会员才能查看附件,请 登录

程序代码:
Sub cha()
    Dim tmp() As String, p As Long, xmlhttp As Object, bh$
    Dim i As Long   
    For p = 2 To 3 '此处应该是到几万的(小说名称)   
        With CreateObject("Msxml2.XMLHTTP")
            .Open "get", Cells(p, 1), False
            .send
            tmp() = Split(StrConv(.responsebody, vbUnicode), ".html"">")
        End With     
        For m = 1 To 5 '此处应该是有几十个(小说章节)
            Cells(p, m + 1) = Split(tmp(m), "</a>")(0)
        Next m
    Next p
End Sub


以上是用excel的vba代码实现的,只是举个例子。
所需查询数据时公司内网的,别人连接不上的,就用这个获取小说章节来举例子了。
现实数据有几万个,用VBA感觉太费时间了,都说python速度快,请大神们帮忙给写个代码
2 回复
#2
古1232020-05-28 21:24
不会所以没看懂vba代码,我想你可能是想将第一列的网址内容获取章节名写入第二列及后面,我用这些库没多久,可能我写的有些繁琐,你看看
openpyxl库处理excel
requests获取数据
BeautifulSoup解析网页
程序代码:
import openpyxl
import requests
from bs4 import BeautifulSoup

# 打开excel
wb = openpyxl.load_workbook('test.xlsx')
# 表单 Sheet1
sh = wb['Sheet1']
# 循环处理每行第一列
for col in list(sh.columns)[0]:
    # 获取内容
    html = requests.get(col.value)
    bs = BeautifulSoup(html.text)
    # 获取id为list的div,我看了网页,指向每章的标签a都在该div下
    div = bs.find(id='list')
    # id为list里所有a标签
    a_list = div.find_all('a')
    # 从该行第二列开始
    for i in range(2,len(a_list)+2):
        # 写入
        sh.cell(col.row,i,a_list[i-2].text)
   
    print(col.value + '好了')
# 保存
wb.save('test.xlsx')
# 关闭
wb.close()
#3
sssooosss2020-05-29 08:38
学习了
1