Python 将Selenium数据结果传递给Pandas
我正在尝试自动执行返回信息表的搜索。我可以在.text中打印结果,但我的问题是如何将结果传递到数据框中。我问这个问题的原因有两个方面;因为我想将结果打印到CSV文件中,我需要熊猫中的结果,以便稍后进行数据分析。如果有人能帮忙,我将不胜感激。我的代码如下:Python 将Selenium数据结果传递给Pandas,python,selenium-webdriver,web-scraping,Python,Selenium Webdriver,Web Scraping,我正在尝试自动执行返回信息表的搜索。我可以在.text中打印结果,但我的问题是如何将结果传递到数据框中。我问这个问题的原因有两个方面;因为我想将结果打印到CSV文件中,我需要熊猫中的结果,以便稍后进行数据分析。如果有人能帮忙,我将不胜感激。我的代码如下: import time from selenium import webdriver import pandas as pd search = ['0501020210597400','0501020210597500','05010202
import time
from selenium import webdriver
import pandas as pd
search = ['0501020210597400','0501020210597500','0501020210597600']
df = pd.DataFrame(search)
chrome_path = [Chrome Path]
driver = webdriver.Chrome(chrome_path)
driver.get('https://enquiry.mpsj.gov.my/v2/service/cuk_search/')
x = 0
while x <(len(df.index)):
search_box = driver.find_element_by_name('sel_value')
new_line = (df[0][x]).format(x)
search_box.send_keys(new_line)
search_box.submit()
time.sleep(5)
table = driver.find_elements_by_class_name('tr-body')
for data in table:
print(data.text)
driver.find_element_by_name('sel_value').clear()
x +=1
driver.close()
导入时间
从selenium导入webdriver
作为pd进口熊猫
搜索=['0501020210597400'、'0501020210597500'、'0501020210597600']
df=pd.DataFrame(搜索)
chrome_路径=[chrome路径]
driver=webdriver.Chrome(Chrome\u路径)
司机,上车https://enquiry.mpsj.gov.my/v2/service/cuk_search/')
x=0
要将CSV文件加载到数据帧,您可以执行以下操作:
df = pd.read_csv('example.csv')
请参阅在线文档:
要将数据写入CSV,请参阅本文:on SO
解决办法是:
df.to_csv(file_name, sep='\t')
您可以使用requests和POST来获取信息,而不是使用selenium
import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
search = ['0501020210597400','0501020210597500','0501020210597600']
headers = {'Referer' : 'https://enquiry.mpsj.gov.my/v2/service/cuk_search/1',
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
}
output = []
dfHeaders = ['No.', 'No. Akaun', 'Nama Di Bil', 'Jumlah Perlu Dibayar', '']
with requests.Session() as s:
for item in search:
r = s.get('https://enquiry.mpsj.gov.my/v2/service/cuk_search/1', headers = headers)
soup = bs(r.content, 'lxml')
key = soup.select_one('[name=ACCESS_KEY]')['value']
body = {'sel_input': 'no_akaun', 'sel_value': item, 'ACCESS_KEY': key}
res = s.post('https://enquiry.mpsj.gov.my/v2/service/cuk_search_submit/', data = body)
soup = bs(res.content, 'lxml')
table = soup.select_one('.tbl-list')
rows = table.select('.tr-body')
for row in rows:
cols = row.find_all('td')
cols = [item.text.strip() for item in cols]
output.append([item for item in cols if item])
df = pd.DataFrame(output, columns = dfHeaders)
print(df)
df.to_csv(r'C:\Users\User\Desktop\Data.csv', sep=',', encoding='utf-8-sig',index = False )
我在问如何将数据加载到Pandas数据框中,然后输出到CSV文件。您需要更多解释吗?如果没有的话,我建议你投票表决并回答我的问题。恐怕这没有回答我的问题。我问的是“如何将结果传递到Pandas数据框”,意思是我在脚本中打印的“data.text”。如何将“data.text”传递到数据帧中?我知道如何使用df.to csv。@Ericcoi:那么,你的“data.text”是什么样子的?请给出一个示例。“data.text”结果的示例是:“1.0501020210597400 2A-3雪兰莪州浦项市班达尔普特里1/2号,雪兰莪州浦项市47100号,Pilih Untuk Bayar 0.00室”。我希望能够将这些数据传递到数据帧。我能想到的唯一方法是使用pd.read_html并针对整个表。如果这是您的意思,请告诉我。我认为这是一个很好的解决方案。你能推荐一些好的阅读材料或参考资料吗?我想了解更多关于如何做到这一点。谢谢。它回答问题了吗?当然,我会在工作中挖掘出一些信息。浏览一下。注意在左侧导航栏中有更复杂的帖子示例。另外,阅读