热线电话:13121318867

登录
2020-03-20 阅读量: 1564
爬虫时,代码报错提示变量未定义问题。

爬虫函数这边遇到了个问题运行显示没有定义

这个是什么错?

函数是这样的

网上找了好多教程还是没解决

答:结合代码与报错信息来看,这是变量作用域导致的问题。函数get_baby_one_page()是无法访问外部的browser对象的。需要在定义函数的时候添加一个参数。代码可以这样

#定义函数的时候添加变量
def get_baby_one_page(browser):
df_one = pd.DataFrame()

ID = [i.text.replace('商品编码:', '') for i in browser.find_elements_by_xpath('//*[@id="box"]/tr/td[1]/div[2]/div[1]')]
img = [i.get_attribute('src') for i in browser.find_elements_by_xpath('//*[@id="box"]/tr/td[1]/div[1]/img')]
order = [i.text for i in browser.find_elements_by_xpath('//*[@id="box"]/tr/td[2]')[0:30]]
sales = [i.text for i in browser.find_elements_by_xpath('//*[@id="box"]/tr/td[6]')[0:30]]
profit = [i.text for i in browser.find_elements_by_xpath('//*[@id="box"]/tr/td[9]')[0:30]]

df_one['商品ID'] = ID
df_one['图片'] = img
df_one['订单数'] = order
df_one['销售金额'] = sales
df_one['利润率'] = profit
return df_one

def get_baby_data(startDt, endDt, page_num):
url = "http://paiwocw.souyousoft.com/Login/Index"
browser = webdriver.Chrome()
browser.get(url)
browser.find_element_by_name('UserName').send_keys('00000')
browser.find_element_by_name('PassWord').send_keys('00000')
browser.find_element_by_id('btnSubmit').click()
browser.find_element_by_link_text('宝贝日报').click()
browser.find_element_by_name('startDt').clear()
browser.find_element_by_name('endDt').clear()
browser.find_element_by_name('endDt').send_keys(endDt)
browser.find_element_by_name('startDt').send_keys(startDt)
browser.find_element_by_link_text('查询').click()
time.sleep(3)
df = pd.DataFrame()
for i in range(page_num):
# 提取第一页
# 调用函数的时候将定义好的对象传入
df_one = get_baby_one_page(browser)
# 合并
df = df.append(df_one, ignore_index=True)
# 翻页
pages = browser.find_element_by_xpath('//a[@title="下一页"]')
browser.execute_script("arguments[0].click();", pages)
time.sleep(3)
# 在结束后及时释放浏览器资源
browser.close()
return df

16.4240
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子