我是一个初学者,我有一个静态数组,我想从这个数组中连续地取出变量,并将它们作为列标题赋给for循环的每一次迭代。例如,在第一次循环之后,将col_titles中的第一个变量赋给列标题。在第二次循环之后,将col_titles中的第二个变量赋给列标题,以此类推。下面是我目前所做的工作:
data = []
col_titles = ['30024`, '30033', '30038']
urls = [
'https://www.example.com/page1',
'https://www.example.com/page2',
'https://www.example.com/page3
]
counter = 1
for url in urls:
driver.get(url)
h2s = driver.find_elements(By.TAG_NAME, 'h2')
try:
for h2 in h2s:
if counter <= 5:
data.append(h2.get_attribute("innerText"))
counter = counter + 1
except (ElementNotVisibleException, NoSuchElementException):
data.append("None")
driver.close()
print(data)
目前,输出是一个数组,包含每个循环中的所有变量,如so(每个h2反映每个url中唯一的h2标题):
[h2, h2, h2, h2, h2, h2, h2, h2, None, None, h2, h2, h2, h2, None]
这很好,因为我所做的只是将每次迭代追加到“data”数组。
"这就是我被困住的地方"
我想我应该在for循环中创建一个DataFrame,以便从“col_titles”数组中获取列标题,并将其指定为for循环每次迭代之后(或之前)的列标题,但我不知道如何正确地执行此操作,我希望获得如下输出:
30024 30033 30038
h2 h2 h2
h2 h2 h2
h2 h2 h2
h2 None h2
h2 None None
任何见解都非常赞赏!
2条答案
按热度按时间plicqrtu1#
使用collections.defaultdict和
zip
函数。要获得结果,然后将其作为列/值传递给PandasDataFrame,在您的情况下使用类似于字典的数据结构会更方便。
代替
data = []
初始化:然后迭代
urls
,分别累加每个 * 列 * 的值:最后,当生成
pd.DataFrame(data)
的 Dataframe 时,您将得到如下所示的结构:bvjxkvbb2#
首先创建字典,从col_titles添加键,从每次迭代中赋值,得到一个列表,然后将字典压缩到 Dataframe -代码如下所示-