为了账号安全,请及时绑定邮箱和手机立即绑定

用硒刮纸时换位表

用硒刮纸时换位表

慕仙森 2022-08-16 18:56:45
我正在尝试通过从多个页面进行网络抓取来收集数据。问题是我想将列转置为行,以将抓取的数据作为数据帧获取。我检查了这个问题并将其应用于我的python代码,但它无法正常工作。这是我下面的代码:browser.get('https://fortune.com/global500/2019/walmart') data =[]i = 1while True:    table = browser.find_element_by_css_selector('tbody')    if i > 2:        break    try:        print("Scraping Page no. " + str(i))        i = i + 1        for row in table.find_elements_by_css_selector('tr'):            cols =  [cell.text for cell in row.find_elements_by_css_selector('td.dataTable__value--3n5tL.dataTable__valueAlignLeft--3uvNx')]            colsT = data.append(np.array(cols).T.tolist())        try:            WebDriverWait(browser, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a > span.singlePagination__icon--2KbZn"))).click()            time.sleep(3)        except TimeoutException:            break    except Exception as e:        print(e)        breakdata1 = pd.DataFrame(data)print(data1)以下是我运行的代码的输出:Scraping Page no. 1Scraping Page no. 2                          00       C. Douglas McMillon1                 Retailing2     General Merchandisers3         Bentonville, Ark.4                         -5                        256                 2,200,0007              Dai Houliang8                    Energy9        Petroleum Refining10                  Beijing11                        -12                       2113                  619,151这就是我想要的样子:0    C. Douglas McMillon   Retailing   General Merchandisers    Bentonville, Ark.    -  ...1    Dai Houliang          Energy      Petroleum Refining       Beijing              -  ...任何建议或更正将不胜感激。
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

您可以直接将值列表作为行添加到数据框中。我设置了具体的列,并且列表被添加到与这些列匹配的数据帧中。


browser.get('https://fortune.com/global500/2019/walmart') 


data =[]

df = pd.DataFrame(columns = ['c1', 'c2', 'c3', 'c4', 'c5','c6','c7'])


i = 1

while True:

    table = browser.find_element_by_css_selector('tbody')

    if i > 2:

        break

    try:

        print("Scraping Page no. " + str(i))

        i = i + 1

        values =[]


        for row in table.find_elements_by_css_selector('tr'):

            value = ([cell.text for cell in row.find_elements_by_css_selector('td.dataTable__value--3n5tL.dataTable__valueAlignLeft--3uvNx')])

            values.append(value)

        print(values)

        s = pd.Series(values,index=df.columns)

        df = df.append(s,ignore_index=True)


        try:


            WebDriverWait(browser, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a > span.singlePagination__icon--2KbZn"))).click()

            time.sleep(3)


        except TimeoutException:

            break




    except Exception as e:

        print(e)

        break



print(df)


browser.quit()

输出:


                      c1           c2  ...    c6           c7

0  [C. Douglas McMillon]  [Retailing]  ...  [25]  [2,200,000]

1         [Dai Houliang]     [Energy]  ...  [21]    [619,151]


查看完整回答
反对 回复 2022-08-16
?
烙印99

TA贡献1829条经验 获得超13个赞

你只需要使用熊猫转置函数:


df_transposed = data1.T

输出:


0    C. Douglas McMillon   Retailing   General Merchandisers    Bentonville, Ark.    -  ...

1    Dai Houliang          Energy      Petroleum Refining       Beijing      


查看完整回答
反对 回复 2022-08-16
  • 2 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信