Python can';t正确下载嵌套表[已编辑]
我想从网站上删除一张桌子。我做登录,进入页面。。。而且,使用手动方式,我可以看到我需要的几个表,它们大部分是嵌套的,但问题是,当我运行程序时,结果文件只加载头和最后一个表(包含总和和内容的表),但我需要它来获取所有表。 问题是,我不能使用Selenium,因为Selenium需要一个接口,而下载表的服务器没有接口 我需要得到的表格的打印件 所以我需要得到所有的表,但如果我正常下载它们,文件只会得到标题和最终值,有人知道该怎么做吗? 谢谢 根据要求,以下是我用来刮表的代码:Python can';t正确下载嵌套表[已编辑],python,python-requests,screen-scraping,Python,Python Requests,Screen Scraping,我想从网站上删除一张桌子。我做登录,进入页面。。。而且,使用手动方式,我可以看到我需要的几个表,它们大部分是嵌套的,但问题是,当我运行程序时,结果文件只加载头和最后一个表(包含总和和内容的表),但我需要它来获取所有表。 问题是,我不能使用Selenium,因为Selenium需要一个接口,而下载表的服务器没有接口 我需要得到的表格的打印件 所以我需要得到所有的表,但如果我正常下载它们,文件只会得到标题和最终值,有人知道该怎么做吗? 谢谢 根据要求,以下是我用来刮表的代码: soup =
soup = BeautifulSoup(html.content)
tables = soup.findAll("table")
subtable = next(subtable for table in soup.find_all('table') for subtable in table.find_all('table'))
for table in tables:
print '======================'
print table
print '==================================='
for row in table.find_all("tr"):
for td in row.find_all("td"):
data = td.get_text()
print "tds", td
try:
print 'here '
print data
print '===================='
_date = datetime.date((data[6:10]),int(data[3:5]),int(data[0:2]))
if data_atual == _data or data_anterior == _data:
try:
_input = td.find("input")
payload = "__RequestVerificationToken=" + _input.get("value")
url = "www.Awebsite.com" + row.get('id').replace("row-","")
res = session.post(url, headers=headers, data=payload)
try:
file = open("C:\\... filename.json" , "w")
file.write(res.content)
file.close()
except Exception as err:
exc_type, exc_obj, exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
print(exc_type, fname, exc_tb.tb_lineno)
print(err)
except Exception as err:
exc_type, exc_obj, exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
print(exc_type, fname, exc_tb.tb_lineno)
print(err)
except Exception as err:
pass
这是我需要删除的HTML区域。(问题是,要查看嵌套表,我需要为表中的每个表发出.json请求)
102550100注册表筛选器:
资料
类型
描述
价值
2018年7月31日21:00:00SaldoSaldo-1061501/08/2018 21:00:00SaldoSaldo-1061508/08/2018 19:02:23交易支付交易支付38006/08/2018 17:34:43交易借记交易授权编号。$38008/08/2018 19:02:23交易支付交易支付437406/08/2018 15:36:01交易借记交易授权编号。$437408/08/2018 19:02:23交易交易交易付款710706/08/2018 16:12:38交易信用交易授权编号599806/08/2018 15:51:33交易信用交易授权029530美元欢迎来到StackOverflow!为了帮助您,我们需要查看您正在使用的代码和您试图刮取的HTML,最好是作为一个整体。查看该页面以获取帮助。@HarryCutts我已经用代码和html编辑了这个问题。这个问题似乎有两个部分:从隐藏的
中提取标记,以及向网站发出相应的请求以检索更多数据。你在哪方面有问题?您是否已检查是否向正确的URL发出请求?(从url=…
行看,您的代码目前似乎无法形成正确的url,因为您没有添加斜杠。)提出适当的请求很麻烦。。。即使使用json数据获取“post”请求,我似乎也无法从中检索到正确的数据。。。大多数情况下,它返回的不是json,而是登录页面htmlOK,所以听起来这是发出请求的问题,而不是HTML抓取的问题。您最好用一个失败请求的示例编写一个新问题,并且只包含发出请求的代码(因为HTML抓取听起来像是在工作)。在我的脑海中,您可能希望在使用网页时将发送的标题与浏览器检查器中显示的标题进行比较。