【发布时间】:2019-10-16 11:41:30
【问题描述】:
我有以下 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 它不应该使用不同名称的公司。
【问题讨论】:
-
所以问题不在于顺序,是有一个空字符串来保持位置吗?修改提取数据的方式是解决方案,如果数据存在于表中,则迭代 trs
-
好吧,您可以检查...如果公司名称未定义/为空,则相应地在变量中传递默认值。
-
@Wonka 请看我的编辑。数据在 div 标签中
-
@Sindu_ 然后迭代主 div
-
@Wonka 会给我所有的细节。但我无法确定姓名、公司名称和地址是哪一个。
标签: python selenium dataframe web-scraping