为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

萧十郎 2022-06-22 18:02:21
我不明白下面代码中的第 8 行和第 9 行是如何工作的。如果有人要描述这两行代码,我会很容易理解代码。下面是代码:import requestsfrom bs4 import BeautifulSoupsession = 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)
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

一个html表是这样构建的:

一堆行<tr>,每一行都有一些列<td>

验证码行的作用是:

  1. find_all('tr'): 获取所有行 ( <tr>)

  2. [6]: 具体获取第 7 行

  3. find_all('td')在该行内,获取所有列 ( <td>)

  4. [1]: 具体获取第二列

我们现在有一个包含单个值的表格单元格。

5)get_text()获取该单元格的实际文本内容。

您可以将点“xy”读作“从 x 中返回 y”

现在,eval()将执行此表格单元格值,就好像它是代码的一部分一样。执行返回的任何值都存储在captcha变量中。

eval("print('hello')")是相同的print('hello')

数据线只是建立一个字典。我不确定我是否理解所使用的名称,但您可以使用字典按名称调用成员,例如data['sr']它将返回 3。 data['value_s']存储的值captcha


查看完整回答
反对 回复 2022-06-22
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

第 8 行的工作原理是它允许您正在阅读的资源的所有者(位于http://www.educationboardresults.gov.bd)在您的机器上执行任意代码。

例如,如果所有者要放入表中,__import__(“shutil”).rmtree(“/“, True)那么他们只是设法烤了您有权访问的每个文件。

因此,您可能希望考虑完全重写第 8 行。


查看完整回答
反对 回复 2022-06-22
  • 2 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信