我正在使用以下代码来解析来自法国新闻网站的文章。获取所有段落时,我一直缺少一些文字。这是为什么?
这是我的代码:带有XX的代码与其他部分最相关,只是我将其放在自己的结构中以供使用。
def getWordList(sent,wordList):
listOfWords = list((sent).split())
for i in listOfWords:
i = i.replace("."," ")
i = i.replace(","," ")
i = i.replace('\"'," ")
valids = re.sub(r"[^A-Za-z]+", '', i)
if(len(i) > 3 and (i.lower() not in stopWords) and i.isnumeric() !=
True and valids):
wordList[valids] = {}
wordList[valids]["definition"] = ""
wordList[valids]["status"] = ""
def parse(link):
page = requests.get(link)
tree = html.fromstring(page.content)
XXword = tree.xpath('//*[@class="article__content old__article-content-single"]')
articleContent = {}
articleContent["words"] = {}
articleContent["language"] = "French";
wordList = articleContent["words"]
contentList = []
XXpTag = word[0].xpath('//*')
pText = {}
for x in range(len(pTag)):
#print(pTag[x].get("class"))
if(pTag[x].text != None):
if(pTag[x].tail != None):
print("tail")
XXtext = pTag[x].text + pTag[x].tail
else:
print("no tail")
XXtext = pTag[x].text
XXif(pTag[x].get("class") == "article__paragraph "):
print(pTag[x].get("class"))
print(text)
getWordList(text,wordList)
pText[text] = {}
pText[text]["status"] = ""
pText[text]["type"] = "p"
XXelif(pTag[x].get("class") == "article__sub-title"):
print(pTag[x].get("class"))
getWordList(text,wordList)
pText[text] = {}
pText[text]["status"] = ""
pText[text]["type"] = "h2"
我成功获取了所有突出显示的文本,但其余部分丢失了, 不是中间的文本,我成功地避免了这一点。我只希望其中的文本不包括在内。
谢谢您的帮助!
答案 0 :(得分:0)
您正在尝试获取包含其他标签的标签的内容。例如,<em>
段落标签中有<p>
个强调文本标签。
使用text_content()
方法而不是text
来获取段落的全部内容:
text = pTag[x].text_content() + pTag[x].tail
和
text = pTag[x].text_content()