PGC123

2020-03-20   阅读量: 1206

大数据 数据分析师 Python爬虫 Python编程

爬虫时,代码报错提示变量未定义问题。

扫码加入数据分析学习群

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

这个是什么错?

函数是这样的

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

答:结合代码与报错信息来看,这是变量作用域导致的问题。函数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

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
16.4240 1 3 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子