求助各位大神
用爬虫爬取表格的时候,因为每一页的表格长度不一样,比如爬取每一页的前10行的时候,有的表格会没有第10行,然后爬虫就自动停止了。。。。write_clo =
df = pd.DataFrame(columns=(write_clo))
df.to_csv('demo.csv', line_terminator="\n", index=False, mode='a', encoding='utf8')
这个时候就会报错:local variable 'tj' referenced before assignment
请问各位大神,遇到这种情况应该怎么办?
你在你报错那一行前面用 global 或者 nonlocal 声明下 tj 变量应该就可以了 肯定是思路有问题需要改进 Twilight6 发表于 2020-6-19 15:28
你在你报错那一行前面用 global 或者 nonlocal 声明下 tj 变量应该就可以了
我是新手,完全不懂啊 。
就是比如一页没有第十行的存在,是用global还是nonlocal?
不是第10行里面没有内容,而是根本就没有第十行。 lpp25621832 发表于 2020-6-19 16:22
我是新手,完全不懂啊 。
就是比如一页没有第十行的存在,是用global还是nonlocal?
不是第10行里面没 ...
根据你的报错信息,应该在之前加上global tj,将tj变成全局变量 lpp25621832 发表于 2020-6-19 16:22
我是新手,完全不懂啊 。
就是比如一页没有第十行的存在,是用global还是nonlocal?
不是第10行里面没 ...
最简单的就是把你这段代码发上来吧~~ xiaofeiyu 发表于 2020-6-19 16:25
根据你的报错信息,应该在之前加上global tj,将tj变成全局变量
write_clo =
global tj
df = pd.DataFrame(columns=(write_clo))
df.to_csv('demo5.csv', line_terminator="\n", index=False, mode='a', encoding='utf8')
然后报错:SyntaxError: name 'tj' is used prior to global declaration
lpp25621832 发表于 2020-6-19 16:31
write_clo =
global tj
应该是在定义tj的时候加上global tj xiaofeiyu 发表于 2020-6-19 16:32
应该是在定义tj的时候加上global tj
加上global tj 以后,程序是没有报错了,
可是 我的数据就整个的都错乱了。。。。
因为原本那一格是没有数据的,结果程序自动的把别的数据给填进去了。。。
请教大神,有没有什么方法能让他为空值,但是还是能占个位子。 lpp25621832 发表于 2020-6-19 16:54
加上global tj 以后,程序是没有报错了,
可是 我的数据就整个的都错乱了。。。。
因为原本那一格是没 ...
为什么会乱呢?
你可以判断一下,如果第10格没有数据,那就自动设为None xiaofeiyu 发表于 2020-6-19 16:56
为什么会乱呢?
你可以判断一下,如果第10格没有数据,那就自动设为None
怎么判断呢?怎么写可以让它自动显示出None? lpp25621832 发表于 2020-6-19 16:59
怎么判断呢?怎么写可以让它自动显示出None?
具体不清楚你的代码结构,但是主要就是用if
当判断到只有九个数据时,tj=None
你可以先自己思考一下 xiaofeiyu 发表于 2020-6-19 17:01
具体不清楚你的代码结构,但是主要就是用if
当判断到只有九个数据时,tj=None
element = driver.find_element_by_xpath('//*[@id="datalist"]/table')
tj_content = element.find_elements_by_xpath('//*[@id="datalist"]/table/tbody/tr/td')
for tj in tj_content:
tj = tj.get_attribute("innerText")
print(tj)
请教大神,如何写这个if 语句,能够判断tj是否为None ? lpp25621832 发表于 2020-6-19 17:12
element = driver.find_element_by_xpath('//*[@id="datalist"]/table')
tj_content = element.find_ele ...
那需要看innerText是什么了。。。
按理说如果没有这个信息tj就是None
你可以先把运行结果发过来看看 xiaofeiyu 发表于 2020-6-19 20:19
那需要看innerText是什么了。。。
按理说如果没有这个信息tj就是None
你可以先把运行结果发过来看看
它不显示None,而是把下一行的数据提到这一行了,这样数据就错乱了。。。
怎么写个if语句能够让运行到 tj 这一行的时候,不存在就显示None,或者随便打印个数字,例如(0),
存在的时候就正常打印数据。 lpp25621832 发表于 2020-6-19 22:15
它不显示None,而是把下一行的数据提到这一行了,这样数据就错乱了。。。
怎么写个if语句能够让运行到 t ...
如果他自动转到下一行了,那我也想不出什么办法了。。。
对不起我能力有限,你可以请教其他人
或者等我想出思路后再解答这个问题吧。
页:
[1]