我想只解析来自blogspot的文本,并按照下面的方式执行
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("https://edwvb.blogspot.ru/2018/03/3-tipa-povedeniya-kotorye-opredelyayut-uspeshnyh-prodavcov.html")
bsObj = BeautifulSoup(html, "html.parser")
所以我只能通过这种方式来查看帖子的文本
nameList = bsObj.findAll("div", {"dir":"ltr", "style":"text-align: left;", "trbidi":"on"})
但是通过这个我解析了两个对象,当我将它转换为pandas
时df = pd.DataFrame(nameList)
我有两行。
0
0 \n\n\n\n\n(adsbygoogle = window.adsbygoogle ||...
1 \nПеревод статьи 3 Behaviors That Drive Succes...
我需要解析第1行。我尝试这样做
df = pd.DataFrame(nameList[1])
并获取
TypeError: DataFrame constructor called with incompatible data and dtype: setting an array element with a sequence
nameList [1]的类型为bs4.element.Tag
type(nameList[1])
bs4.element.Tag
那么如何将bs4.element.Tag转换为pandas?或者可能有更简单的方法来解析文本blogspot.com?
答案 0 :(得分:0)
这可能不是一个简单的决定
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("https://edwvb.blogspot.ru/2018/03/3-tipa-povedeniya-kotorye-opredelyayut-uspeshnyh-prodavcov.html")
bsObj = BeautifulSoup(html, "html.parser")
nameList = bsObj.findAll("div", {"dir":"ltr", "style":"text-align: left;", "trbidi":"on"})
nameList = [i.text for i in nameList]
之后我们需要先将nameList[1]
转换为pd.Series
,然后转换为DataFrame
S = pd.Series(nameList[1])
S.to_frame()