猿问

使用 BeautifulSoup 抓取页面会产生奇怪的结果(最后是多个 </p>)。为什么?

我正在尝试使用 BeautifulSoup 抓取页面。我想保留<p></p>标签,以便以后将内容存储在 .xml 文件中,分为段落、标题等。不幸的是,结果有点出乎我的意料。这是它的样子:


为什么</p></p>最后这么多?我习惯了看起来像这样的结构:


<p>some paragraph... </p>

<p>next paragraph... </p>

不是这样的:


some paragraph... <p>

next paragraph... <p></p>

</p>

当我检查 Chrome 中的 HTML 结构时,一切看起来都很好:

http://img4.mukewang.com/60c0890900011b2a07090407.jpg

为什么会这样?这是我的代码:


import os

import requests

from bs4 import BeautifulSoup


payload = {

'username': os.environ['POLITYKA_USERNAME'],

'password': os.environ['POLITYKA_PASSWORD'],

'login_success': 'http://archiwum.polityka.pl',

'login_error': 'https://archiwum.polityka.pl/art/grypa-nam 

niestraszna,378836.html'

}


login_url = 'https://www.polityka.pl/sso/login'

base_url = 'http://archiwum.polityka.pl'

example_url = 'https://archiwum.polityka.pl/art/sciganie- 

wnbsp;organach,378798.html'

with requests.Session() as session:

    session.headers={'User-Agent' : 'Mozilla/5.0'}

    post = session.post(login_url, data=payload)

    request = session.get(example_url)

    soup = BeautifulSoup(request.content, 'html.parser')

    box = soup.find('div', {'id' : 'container'}).find('div', {'class' : 'middle'}).find('div', {'class', 'right'}).find('div', {'class' : 'box'})

    content = box.find('p', {'class' : 'box_text'}).find_next_sibling()

    print(content)


摇曳的蔷薇
浏览 178回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答