将抓取结果存储到Pandas数据框-未正确添加单元格

时间:2020-04-09 00:28:50

标签: python-3.x pandas dataframe web-scraping beautifulsoup

我是新手,正在尝试使用美丽的汤进行一些抓取并将抓取的结果存储到熊猫数据框。稍后,我将尝试将数据帧另存为.csv,但现在让我解释问题出在哪里:

我不知道是否建议对代码做一点“伪”操作,但是我做到了。

所以,放手吧:

    URL = 'http://LINKLINKLINKLINKLINKLINK'
    page = requests.get(URL)
    soup = BeautifulSoup(page.content, 'html.parser')

    X = []
    Y = []
    Z = []

   for XXX in soup.select(".page_XXX"):
       X.append(XXX.get_text(strip=True))

   for YYY in soup.select(".page_YYY"):
       Y.append(YYY.get_text(strip=True))

   for ZZZ in soup.select(".page_ZZZ"):
       Z.append(ZZZ.get_text(strip=True))    

将其存储在列表中

   info = [X, Y, Z]
   info

并输出:

  [['XXXLOREM IPSUM DOLOR SIT AMET'],
  ['YYYLorem ipsum: dolor sit amet, consectetur, adipiscing, elit,  sed do'],
  ['ZZZLorem Ipsum', 'Dolor Sit']]

好的,乍一看对我有用。我想知道下一步如何,并决定将其转换为数据框。

   df = pd.DataFrame(info).T
   df

有问题。我的数据框看起来像这样……嗯,方案:

                              0                     1                   2
   _________________________________________________________________________________
   0  XXXLOREM IPSUM DOLOR SIT AMET        YYYLorem ipsum...          ZZZLorem Ipsum
   _________________________________________________________________________________
   1                           none                     none          ZZZDolor Sit     
   _________________________________________________________________________________

但是我需要将其存储在一行中。换句话说,我需要 ZZZLorem ipsum ZZZDolor Sit 在一个单元格-第2列中在一起。

很奇怪。然后我看到了输出-确切地说是:此列表内的引号('):

   ['ZZZLorem Ipsum', 'Dolor Sit']]

也许这使事情变得混乱了?我尝试了一些类似的临时解决方案,目的是将其合并。

   Z = ', '.join(Z)

...和引号(')消失了:

   ['ZZZLorem Ipsum, Dolor Sit']]

但是输出使我更加困惑。它不起作用:

                                  0                     1                       2
   _________________________________________________________________________________
   0  XXXLOREM IPSUM DOLOR SIT AMET        YYYLorem ipsum...                  ZZZL
   _________________________________________________________________________________
   1                           none                     none                  ZZZO   
   _________________________________________________________________________________
   2                           none                     none                  ZZZR
   _________________________________________________________________________________
   3                           none                     none                  ZZZE    
   _________________________________________________________________________________
   4                           none                     none                  ZZZM    
   _________________________________________________________________________________
   ...                         ...                      ...                   ...

对不起,我不敢再发短信了。感谢您的帮助。

谢谢!

编辑:更准确地说:我需要从此网页中将抓取的数据存储在一行中。想法是,在经过多次迭代与多个页面之后,数据将存储在行中,以后我可以对其进行分析。

此刻,问题在于将一个单元格内容(Z)分成两行。我希望将其存储在第一行的一个单元格中。我不知道发生了什么,为什么。

0 个答案:

没有答案