簡體   English   中英

使用BeautifulSoup將抓取的文本轉換為Pandas數據框

[英]Converting scraped text into Pandas data frame with BeautifulSoup

我正在使用以下代碼從網站中提取一些文本。 我有一個字符串形式。

import requests
URL = 'https://www.instituteforsupplymanagement.org/about/MediaRoom/newsreleasedetail.cfm?ItemNumber=30655&SSO=1'
r = requests.get(URL)
page = r.text

from bs4 import BeautifulSoup
soup = BeautifulSoup(page, 'lxml')
import re

strong_el = soup.find('strong',text='WHAT RESPONDENTS ARE SAYING …')

ul_tag = strong_el.find_next_sibling('ul')
LI_TAG =''
for li_tag in ul_tag.children:

    LI_TAG += li_tag.string

print LI_TAG

我正在嘗試創建一個包含2列的數據框:1)注釋2)行業(括號內的子字符串)。 當我嘗試如下使用StringIO時遇到一些錯誤:'TypeError:數據參數不能是迭代器'。 如何將這些注釋轉換為數據框?

import sys
if sys.version_info[0] < 3: 
    from StringIO import StringIO
else:
    from io import StringIO

import pandas as pd

LI_TAG = StringIO(LI_TAG)
df = pd.DataFrame(LI_TAG)

似乎LI_TAG變量只是一個長字符串-因此您將不得不將其拆分以將其存儲在數據幀中。

import requests
URL = 'https://www.instituteforsupplymanagement.org/about/MediaRoom/newsreleasedetail.cfm?ItemNumber=30655&SSO=1'
r = requests.get(URL)
page = r.text

from bs4 import BeautifulSoup
soup = BeautifulSoup(page, 'lxml')
import re

strong_el = soup.find('strong',text='WHAT RESPONDENTS ARE SAYING …')

ul_tag = strong_el.find_next_sibling('ul')
LI_TAG =''
for li_tag in ul_tag.children:

    LI_TAG += li_tag.string

# Convert to unicode to remove quotation marks \u201c and \u201d
LI_TAG_U = unicode(LI_TAG)
comments=[]
industries=[]
for string in LI_TAG.strip().split('\n'):
    comment, industry =  string.split(u'\u201d')
    comments.append(comment.strip(u'\u201c'))
    industries.append(industry.strip(' (').strip(')'))

import pandas as pd

data = pd.DataFrame()

data['Comment']=comments
data['Industry']=industries

希望這對您有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM