你能解释一下代码的第 8 行和第 9 行是如何工作的吗?

我不明白下面代码中的第 8 行和第 9 行是如何工作的。如果有人要描述这两行代码,我会很容易理解代码。


下面是代码:


import requests

from bs4 import BeautifulSoup


session = requests.session()

form_page = session.get('http://www.educationboardresults.gov.bd')

form = BeautifulSoup(form_page.content, 'lxml')


#Line 8:

captcha = eval(form.form.table.table.find_all('tr')[6].find_all('td')[1].get_text())

#Line 9:

data = dict(sr=3,et=0,exam='ssc', year='2011', board="comilla", roll="16072541", reg="8718001254", value_s=captcha)



萧十郎
浏览 174回答 2
2回答

神不在的星期二

一个html表是这样构建的:一堆行<tr>,每一行都有一些列<td>。验证码行的作用是:find_all('tr'): 获取所有行 (&nbsp;<tr>)[6]: 具体获取第 7 行find_all('td')在该行内,获取所有列 (&nbsp;<td>)[1]: 具体获取第二列我们现在有一个包含单个值的表格单元格。5)get_text()获取该单元格的实际文本内容。您可以将点“xy”读作“从 x 中返回 y”现在,eval()将执行此表格单元格值,就好像它是代码的一部分一样。执行返回的任何值都存储在captcha变量中。eval("print('hello')")是相同的print('hello')数据线只是建立一个字典。我不确定我是否理解所使用的名称,但您可以使用字典按名称调用成员,例如data['sr']它将返回 3。&nbsp;data['value_s']存储的值captcha

幕布斯7119047

第 8 行的工作原理是它允许您正在阅读的资源的所有者(位于http://www.educationboardresults.gov.bd)在您的机器上执行任意代码。例如,如果所有者要放入表中,__import__(“shutil”).rmtree(“/“, True)那么他们只是设法烤了您有权访问的每个文件。因此,您可能希望考虑完全重写第 8 行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python