【问题标题】:How to append data in data frame如何在数据框中附加数据
【发布时间】:2021-12-20 13:42:27
【问题描述】:
import requests
from bs4 import BeautifulSoup
import pandas as pd
headers= {'User-Agent': 'Mozilla/5.0'}

 #put all item in this array
response = requests.get('http://smartcatalog.emo-milano.com/it/espositore/a-mannesmann-maschinenfabrik-gmbh')
soup = BeautifulSoup(response.content, 'html.parser')
table=soup.find_all('table', class_='expo-table general-color')
for row in table:
         for up in row.find_all('td'):
             text_list = [text for text in up.stripped_strings]
             print(text_list)

这些代码运行良好,它们会给我正确的输出,但它们不会提供这些格式的输出,如下所示我想要这些格式的输出,你能帮帮我吗

Indirizzo   Bliedinghauserstrasse 27
Città        Remscheid
Nazionalità   Germania
Sito web      www.amannesmann.de
Stand         Pad. 3 E14 F11
Telefono      +492191989-0
Fax          +492191989-201
E-mail       sales@mannesmann.de
Membro di     Cecimo
Social  

【问题讨论】:

    标签: python dataframe web-scraping beautifulsoup


    【解决方案1】:

    pandas 有一个内置的 html table scraper,所以你可以运行:

    df = pd.read_html('http://smartcatalog.emo-milano.com/it/espositore/a-mannesmann-maschinenfabrik-gmbh')
    

    这会将页面上所有表的列表作为数据框返回,您可以使用df[0] 访问您的数据:

    0 1
    0 Indirizzo Bliedinghauserstrasse 27
    1 Città Remscheid
    2 Nazionalità Germania
    3 Sito web www.amannesmann.de
    4 Stand Pad. 3 E14 F11
    5 Telefono +492191989-0
    6 Fax +492191989-201
    7 E-mail sales@mannesmann.de
    8 Membro di nan
    9 Social nan

    【讨论】:

      【解决方案2】:

      您可以使用.get_text() 方法提取文本并使用参数来避免空格并使用separator 提供额外空间

      data=table.find_all("tr")
      for i in data:
          print(i.get_text(strip=True,separator=" "))
      

      输出:

      Indirizzo Bliedinghauserstrasse 27
      Città Remscheid
      ...
      

      【讨论】:

      • 兄弟,他们给我错误,您将元素列表视为单个元素
      • 感谢您的帮助
      【解决方案3】:

      不要选择 <td>,而是选择 <tr> 并在其上使用 .stripped_strings 以获取逐行数据,然后将它们附加到 Dataframe。

      这里是代码

      import requests
      from bs4 import BeautifulSoup
      import pandas as pd
      headers= {'User-Agent': 'Mozilla/5.0'}
      
      #put all item in this array
      temp = []
      response = requests.get('http://smartcatalog.emo-milano.com/it/espositore/a-mannesmann-maschinenfabrik-gmbh')
      soup = BeautifulSoup(response.content, 'html.parser')
      table=soup.find_all('table', class_='expo-table general-color')
      for row in table:
          for up in row.find_all('tr'):
              temp.append([text for text in up.stripped_strings])
      
      df = pd.DataFrame(temp)
      print(df)
      
                   0                         1
      0    Indirizzo  Bliedinghauserstrasse 27
      1        Città                 Remscheid
      2  Nazionalità                  Germania
      3     Sito web        www.amannesmann.de
      4        Stand            Pad. 3 E14 F11
      5     Telefono              +492191989-0
      6          Fax            +492191989-201
      7       E-mail       sales@mannesmann.de
      8    Membro di                      None
      9       Social                      None
      

      【讨论】:

        猜你喜欢
        • 2022-01-20
        • 2021-07-07
        • 2019-03-22
        • 2022-01-15
        • 2021-12-23
        • 2015-07-09
        • 2020-11-25
        • 2022-08-16
        • 2021-11-25
        相关资源
        最近更新 更多