Python 在webforms中填写数据并获取参与方的名称
有一个网站:。我有一张excel表格,上面有锡编号(增值税编号),我必须填写锡编号部分并将名称填回表格。无论如何,我可以在尝试使用mechanize时自动执行此操作,但它会以空白回复进行响应。代码测试的一些示例(有效)TIN编号如下: 27200599589VPython 在webforms中填写数据并获取参与方的名称,python,excel,mechanize,Python,Excel,Mechanize,有一个网站:。我有一张excel表格,上面有锡编号(增值税编号),我必须填写锡编号部分并将名称填回表格。无论如何,我可以在尝试使用mechanize时自动执行此操作,但它会以空白回复进行响应。代码测试的一些示例(有效)TIN编号如下: 27200599589V 27940018928V 27910053455V使用以下代码: Sub Utility() Dim objIE As Object, htmldoc As Object, data, i As Long, lrow As Lon
27940018928V
27910053455V使用以下代码:
Sub Utility()
Dim objIE As Object, htmldoc As Object, data, i As Long, lrow As Long
Dim TinNo As String
Cells(1, 2).Select
Range(Selection, Selection.End(xlDown)).Select
lrow = Selection.Count
For i = 1 To lrow
Cells(i, 2) = cleartext(Cells(i, 2).Value)
On Error Resume Next
Next
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
.Navigate "http://mahavat.gov.in/Tin_Search/Tinsearch.jsp"
Do While .readyState <> 4: DoEvents: Loop
Set TIN = .document.getelementsbyname("tin")
Set htmldoc = CreateObject("HTMLfile")
'data = Range("B1:G" & lrow)
On Error Resume Next
For i = 1 To lrow
Set TIN = .document.getelementsbyname("tin")
Cells(i, 2).Select
If Not IsError(Cells(i, 2)) Then
TIN.Item(0).Value = Cells(i, 2)
.document.getElementById("Submit").Click
Do While .Busy Or .readyState <> 4: DoEvents: Loop
htmldoc.body.innerhtml = objIE.document.body.innerhtml
temp = Trim(Split(htmldoc.getElementsByTagName("Table")(14).innertext, Cells(i, 2))(1))
If Err.Number <> 0 Then
.Navigate "http://mahavat.gov.in/Tin_Search/Tinsearch.jsp"
Do While .Busy Or .readyState <> 4: DoEvents: Loop
Err.Clear
Cells(i, 3) = "Invelid TIN(Shl'd Start with 27,Totl 12 Chr)"
Cells(i, 4) = "Invelid TIN"
Else
Cells(i, 3) = Mid(temp, InStrRev(temp, " ") + 1, Len(temp))
Cells(i, 4) = Trim(Split(temp, Cells(i, 3))(0))
End If
End If
Next
End With
End Sub
Function cleartext(inputstring As String) As String
Dim onlynumbers As String
onlynumbers = OnlyNums(inputstring)
'MsgBox onlynumbers
onlynumbers = Mid(onlynumbers, InStr(1, onlynumbers, "27"), 11) & "V"
'MsgBox onlynumbers
If Len(onlynumbers) < 12 Then
cleartext = CVErr(xlErrValue)
End If
cleartext = onlynumbers
End Function
Function OnlyNums(sWord As String) As String
Dim sChar As String
Dim x As Integer
Dim sTemp As String
sTemp = ""
For x = 1 To Len(sWord)
sChar = Mid(sWord, x, 1)
If Asc(sChar) >= 48 And _
Asc(sChar) <= 57 Then
sTemp = sTemp & sChar
End If
Next
OnlyNums = sTemp
End Function
子实用程序()
Dim objIE作为对象,htmldoc作为对象,数据,i作为长,lrow作为长
暗淡的丁诺线
单元格(1、2)。选择
范围(选择,选择。结束(xlDown))。选择
lrow=Selection.Count
对于i=1至lrow
单元格(i,2)=明文(单元格(i,2).值)
出错时继续下一步
下一个
Set objIE=CreateObject(“InternetExplorer.Application”)
与奥布杰
.导航“http://mahavat.gov.in/Tin_Search/Tinsearch.jsp"
执行While.readyState 4:DoEvents:Loop
设置TIN=.document.getelementsbyname(“TIN”)
设置htmldoc=CreateObject(“HTMLfile”)
'数据=范围(“B1:G”和lrow)
出错时继续下一步
对于i=1至lrow
设置TIN=.document.getelementsbyname(“TIN”)
单元格(i,2)。选择
如果不是IsError(单元(i,2)),则
锡。项目(0)。值=单元格(i,2)
.document.getElementById(“提交”)。单击
执行While.Busy或.readyState 4:DoEvents:Loop
htmldoc.body.innerhtml=objIE.document.body.innerhtml
temp=Trim(拆分(htmldoc.getElementsByTagName(“表”)(14)。内部文本,单元格(i,2))(1))
如果错误号为0,则
.导航“http://mahavat.gov.in/Tin_Search/Tinsearch.jsp"
执行While.Busy或.readyState 4:DoEvents:Loop
呃,明白了
单元格(i,3)=“Invelid TIN(从27开始,总共12个字符)”
单元(i,4)=“Invelid TIN”
其他的
单元(i,3)=中间(温度,仪表(温度,“”)+1,透镜(温度))
单元(i,4)=微调(拆分(温度,单元(i,3))(0))
如果结束
如果结束
下一个
以
端接头
函数cleartext(inputstring作为String)作为String
仅将数字变暗为字符串
onlynumbers=OnlyNums(inputstring)
'仅MsgBox编号
onlynumbers=Mid(onlynumbers,InStr(1,onlynumbers,“27”)、11)和“V”
'仅MsgBox编号
如果Len(onlynumbers)<12,则
明文=CVErr(Xlerr值)
如果结束
cleartext=仅限数字
端函数
函数OnlyNums(剑作为字符串)作为字符串
Dim sChar作为字符串
作为整数的Dim x
作为字符串的Dim sTemp
sTemp=“”
对于x=1到Len(剑)
沙尔=中(剑,x,1)
如果Asc(sChar)>=48且_
Asc(沙尔)