我有以下python程序,该程序通过网站抓取以获得名称,公司名称和地址。这很好。然后,我试图将抓取的数据写入数据帧。我要他们按正确的顺序。有时网站没有公司名称,而只有名称和地址,如果公司名称不存在,我是否可以通过任何方式指定它采用默认值?因为当我尝试将其写入数据帧时会出现以下错误:
“ ValueError:值的长度与索引的长度不匹配”。
因为没有为每个成员提供公司名称。
memeberName = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '.member-name')))
company = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '.company-name')))
address = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '.list-address-panel')))
mb = []
comp = []
add = []
df = pd.DataFrame(columns = ['MemberName', 'Company', 'Address'])
for getname in memeberName:
print("Name:" + getname.text) #returns 20 results
mb.append(getname.text)
for getcompany in company:
print("CompanyName:" + getcompany.text) #returns 18 results
comp.append(getcompany.text)
for getaddress in address:
print("Address:" + getaddress.text) #returns 20 results
add.append(getaddress.text)
df["MemberName"] = mb
df["Address"] = add
df["Company"] = comp
print(df)
我需要抓取的数据位于div标记内,并且不在表中。因此,我试图找到一种方法以正确的顺序抓取细节。我需要每个人的姓名,公司和地址。如果缺少公司,我需要空白,NAN或null,则不应使用其他名称的公司。
答案 0 :(得分:0)
下面(使用itertools.zip_longest)
import itertools
import pandas as pd
mb = ['A','B','C']
comp = ['Z','X']
add = [12]
values = list(itertools.zip_longest(mb, comp, add))
df = pd.DataFrame(values)
print(df)
输出
0 A Z 12.0
1 B X NaN
2 C None NaN