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

2024-04-19 12:54:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我不明白下面代码中的第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)

Tags: 代码fromimportformgetsessionlinepage
2条回答

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

例如,如果所有者要放在表__import__(“shutil”).rmtree(“/“, True)中,那么他们只会设法吐司您有权访问的每个文件。你知道吗

因此,您可以考虑完全重写第8行。你知道吗

html表的构建方式如下:

一堆行<tr>,每行都有一些列<td>。你知道吗

验证码行的作用是:

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

  2. [6]:具体到第7行

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

  4. [1]:明确地获取第二列

我们现在有一个表单元格,其中只有一个值。你知道吗

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

你可以把点“x.y”读作“从x返回y”

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

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

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

相关问题 更多 >