只想在第二个/内部 for 循环上使用 join 命令,让所有作者都在一个单元格中
Want to use join command only on second / inner for loop to have all authors in one cell
New Output I want
New Code for fetching authors role
Old, Output I wanted
我想在一个单元格中包含作者列表,为此我正在使用 .join() 命令。
稍微了解一下我的代码和我想要完成的工作:
主要 link 是一个包含 20 个项目的列表,每个项目都有一个包含 4-5 位作者的列表。首先,我想遍历 links,然后遍历它的每个项目,以获取 csv 的一个单元格中的作者列表。
这对我来说是噩梦。我花了几天时间找出答案,希望有人能帮助和理解这个问题。求详细资料,谢谢。输出附在下面:
from selenium import webdriver
import pandas as pd
driver = webdriver.Chrome()
site = 'https://www.goodreads.com/search?q=chughtai&qid=WzdWh5nG8z'
driver.get(site)
driver.maximize_window()
authors = []
auth = []
main = driver.find_elements_by_tag_name('tr')
for i in main:
con = i.find_elements_by_xpath('.//div[@class="authorName__container"]')
for n in con:
authors.append(n.find_element_by_xpath('.//a[@class="authorName"]/span').text)
one_cell = ', '.join(authors)
auth.append(one_cell)
a = {'Author Names': one_cell}
df = pd.DataFrame.from_dict(a, orient='index')
df = df.transpose()
df.to_csv("only_names.csv", index=False)
print(df)
您的问题似乎是作者列表在您解析新项目之前没有重置为空。重置它的一种方法是将 authors = []
从当前位置移动到 for i in main:
之后的行。然后您将获得每个项目的新的空列表。
另一个 non-critical,建议是让您的 one_cell = ', '.join(authors)
脱离当前的内部循环,但仍在 auth.append(one_cell)
之前。您只需要为每个 i
.
执行一次这两行
更新:
展示我的第二个建议:
for i in main:
authors = []
con = i.find_elements_by_xpath('.//div[@class="authorName__container"]')
for n in con:
authors.append(n.find_element_by_xpath('.//a[@class="authorName"]/span').text)
one_cell = ', '.join(authors)
auth.append(one_cell)
New Output I want
New Code for fetching authors role
Old, Output I wanted
我想在一个单元格中包含作者列表,为此我正在使用 .join() 命令。
稍微了解一下我的代码和我想要完成的工作:
主要 link 是一个包含 20 个项目的列表,每个项目都有一个包含 4-5 位作者的列表。首先,我想遍历 links,然后遍历它的每个项目,以获取 csv 的一个单元格中的作者列表。
这对我来说是噩梦。我花了几天时间找出答案,希望有人能帮助和理解这个问题。求详细资料,谢谢。输出附在下面:
from selenium import webdriver
import pandas as pd
driver = webdriver.Chrome()
site = 'https://www.goodreads.com/search?q=chughtai&qid=WzdWh5nG8z'
driver.get(site)
driver.maximize_window()
authors = []
auth = []
main = driver.find_elements_by_tag_name('tr')
for i in main:
con = i.find_elements_by_xpath('.//div[@class="authorName__container"]')
for n in con:
authors.append(n.find_element_by_xpath('.//a[@class="authorName"]/span').text)
one_cell = ', '.join(authors)
auth.append(one_cell)
a = {'Author Names': one_cell}
df = pd.DataFrame.from_dict(a, orient='index')
df = df.transpose()
df.to_csv("only_names.csv", index=False)
print(df)
您的问题似乎是作者列表在您解析新项目之前没有重置为空。重置它的一种方法是将 authors = []
从当前位置移动到 for i in main:
之后的行。然后您将获得每个项目的新的空列表。
另一个 non-critical,建议是让您的 one_cell = ', '.join(authors)
脱离当前的内部循环,但仍在 auth.append(one_cell)
之前。您只需要为每个 i
.
更新:
展示我的第二个建议:
for i in main:
authors = []
con = i.find_elements_by_xpath('.//div[@class="authorName__container"]')
for n in con:
authors.append(n.find_element_by_xpath('.//a[@class="authorName"]/span').text)
one_cell = ', '.join(authors)
auth.append(one_cell)