我无法将Python输出导出到excel文件
我编写了以下代码,无法将数据导出到excel工作表我无法将Python输出导出到excel文件,python,excel,selenium,beautifulsoup,Python,Excel,Selenium,Beautifulsoup,我编写了以下代码,无法将数据导出到excel工作表 from selenium import webdriver import time, re from selenium.webdriver.support.ui import Select from bs4 import BeautifulSoup import pandas as pd chrome_path = r"C:\Users\user\Desktop\chromedriver_win32\chromedriver.exe"
from selenium import webdriver
import time, re
from selenium.webdriver.support.ui import Select
from bs4 import BeautifulSoup
import pandas as pd
chrome_path = r"C:\Users\user\Desktop\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get("http://agmarknet.gov.in/PriceTrends/SA_Pri_Month.aspx")
html_source = driver.page_source
for x in range(1,6): #loop for 5 months
print (x)
element_commodity = driver.find_element_by_id ("cphBody_Commodity_list")
drp_commodity = Select(element_commodity)
drp_commodity.select_by_visible_text("Wheat")
time.sleep(15)
element_year = driver.find_element_by_id ("cphBody_Year_list")
drp_year = Select(element_year)
drp_year.select_by_visible_text("2020")
time.sleep(15)
element_month = driver.find_element_by_id ("cphBody_Month_list")
drp_month = Select(element_month)
drp_month.select_by_index(x)
time.sleep(15)
driver.find_element_by_xpath("""//*[@id="cphBody_But_Submit"]""").click()
time.sleep(15)
soup = BeautifulSoup(driver.page_source, 'html.parser')
table = pd.read_html(driver.page_source)[3] #third table is the one that we want
print(len(table))
print(table)
table.to_excel(r'C:\Users\user\Desktop\python.xlsx', sheet_name = 'x')
这是我得到的结果:
1
18
0 ... 5
0 State ... % Change(Over Previous Year)
1 Assam ... __
2 Chattisgarh ... -36.87
3 Gujarat ... 6.73
4 Haryana ... __
5 Jharkhand ... __
6 Karnataka ... -1.82
7 Kerala ... 11.27
8 Madhya Pradesh ... 7.46
9 Maharashtra ... 1.46
10 NCT of Delhi ... 5.05
11 Odisha ... __
12 Punjab ... __
13 Rajasthan ... 8.12
14 Uttar Pradesh ... 8.5
15 Uttrakhand ... 2.83
16 West Bengal ... 5.69
17 Average ... NaN
[18 rows x 6 columns]
2
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python38\agmarknet soup table extraction
trial.py", line 17, in <module>
element_commodity = driver.find_element_by_id ("cphBody_Commodity_list")
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-
packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-
packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-
packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate
element: {"method":"css selector","selector":"[id="cphBody_Commodity_list"]"}
(Session info: chrome=83.0.4103.61)
1
18
0 ... 5.
0状态…%变化(与上一年相比)
1阿萨姆__
查蒂斯加尔2号-36.87
3古吉拉特邦。。。6.73
哈里亚纳邦__
5贾坎德__
卡纳塔克邦6号-1.82
喀拉拉邦7号。。。11.27
中央邦8号。。。7.46
9马哈拉施特拉邦。。。1.46
新德里10号。。。5.05
11奥迪沙__
12旁遮普__
13拉贾斯坦邦。。。8.12
北方邦14号。。。8.5
15个手。。。2.83
16西孟加拉邦。。。5.69
平均17。。。楠
[18行x 6列]
2.
回溯(最近一次呼叫最后一次):
文件“C:\Users\user\AppData\Local\Programs\Python38\agmarknet汤表提取
试用版.py“,第17行,in
element_commodity=driver.find_element_by_id(“cphBody_commodity_列表”)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\selenium\webdriver\remote\webdriver.py”,第360行,按id查找元素
返回self.find_元素(by=by.ID,value=ID_u)
文件“C:\Users\user\AppData\Local\Programs\Python\38\lib\site-
packages\selenium\webdriver\remote\webdriver.py”,第976行,在find\u元素中
返回self.execute(Command.FIND_元素{
文件“C:\Users\user\AppData\Local\Programs\Python\38\lib\site-
packages\selenium\webdriver\remote\webdriver.py”,执行中的第321行
self.error\u handler.check\u响应(响应)
文件“C:\Users\user\AppData\Local\Programs\Python\38\lib\site-
packages\selenium\webdriver\remote\errorhandler.py”,检查响应中的第242行
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:无此类元素:无法定位
元素:{“方法”:“css选择器”,“选择器”:“[id=“cphBody_商品列表”]”
(会话信息:chrome=83.0.4103.61)
其想法是创建一个excel文件,其中包含5张对应于下拉菜单中5个月的输出的表格。我无法理解为什么.to_excel命令不起作用。提前感谢您的帮助。一些问题:
NoSuchElementException
您看到了。一个快速解决方法是添加一个驱动程序.back()
作为循环中的最后一个操作结果列表中,然后将此列表写入Excel,每个表都放在单独的工作表上
results=[]
for x in range(1,6): #loop for 5 months
print (x)
element_commodity = driver.find_element_by_id ("cphBody_Commodity_list")
drp_commodity = Select(element_commodity)
drp_commodity.select_by_visible_text("Wheat")
time.sleep(10)
element_year = driver.find_element_by_id ("cphBody_Year_list")
drp_year = Select(element_year)
drp_year.select_by_visible_text("2020")
time.sleep(10)
element_month = driver.find_element_by_id ("cphBody_Month_list")
drp_month = Select(element_month)
drp_month.select_by_index(x)
time.sleep(10)
driver.find_element_by_xpath("""//*[@id="cphBody_But_Submit"]""").click()
time.sleep(10)
soup = BeautifulSoup(driver.page_source, 'html.parser')
table = pd.read_html(driver.page_source)[3] #third table is the one that we want
print(len(table))
print(table)
results.append(table)
driver.back()
time.sleep(1)
with pd.ExcelWriter(r'eexport_sheets.xlsx') as writer:
for i, table in enumerate(results):
table.to_excel(writer, sheet_name = f'{i+1}', index=False)
writer.save()
Excel输出:
<强>一般注释< /强>考虑使用<代码> WebdriverWait <代码>而不是<代码>时间。睡眠
现在非常感谢,代码运行得很好!也是WebDrReValw的一个很棒的提示。命令非常有用。非常感谢!不用担心。只要回答满意,请将其标记为已接受。