Python:BeautifulSoup无法解析HTML页面

时间:2019-05-23 17:04:36

标签: python beautifulsoup

我正在尝试解析this URL

我正在使用请求和BeautifulSoup。

Python请求成功获取页面。

我尝试打印页面内容以查看是否有任何内容。它具有内容,但是不知道为什么BeautifulSoup无法解析它。卡住了,程序无法继续前进。

我也尝试使用lxml作为解析器,但是没有用。

代码:

import requests
from bs4 import BeautifulSoup


url = "http://mnregaweb4.nic.in/netnrega/FTO/ResponseDetailStatusReport.aspx?lflag=&flg=W&page=s&state_name=BIHAR&state_code=05&district_name=ARARIA&district_code=0541&fin_year=2018-2019&typ=R&mode=B&source=national&Digest=RZw1g4RnMeHsOzbabiNGBg"

reference_page = requests.get(url)

print(" Total time to get page in seconds : "+str(reference_page.elapsed.total_seconds()))

print('\t Reference Page status : '+ str(reference_page))
print(reference_page.content)

reference_page_soup = BeautifulSoup(reference_page.content,'html.parser')
print("\n \t Page parsed")

3 个答案:

答案 0 :(得分:0)

使用html.parser代替使用lxml。对我而言,整个过程不到5秒。 我用下面的代码。

import requests as rq
from bs4 import BeautifulSoup

url = 'http://mnregaweb4.nic.in/netnrega/FTO/FTOReport.aspx?page=s&mode=B&flg=W&state_name=BIHAR&state_code=05&fin_year=2018-2019&dstyp=B&source=national&Digest=2H3ATbXXBsabT72RmlXODw'

resp = rq.get(url).content

soup = BeautifulSoup(resp, "lxml")

对于我的Python安装,请求软件包的版本为 2.21.0 BeautifulSoup4 的版本为 0.0.1 >和 lxml 的版本为 4.2.5 。 lxml解析器比html.parser快得多。

答案 1 :(得分:0)

有效的是,我更新了以下三个软件包。

我应该逐个升级软件包,以查看哪个软件包确实存在问题。

然后更新了以下软件包:

  1. 请求
pip install requests --upgrade
  1. BeautifulSoup
pip install beautifulsoup --upgrade
  1. lxml
pip install lxml --upgrade

答案 2 :(得分:-1)

因此,首先服务器响应非常慢。但是,即使从本地文件读取相同的内容并将其传递到BeautifulSoup,也要花费很多时间。对我来说大约是4秒(BeautifulSoup初始化时只有4秒而没有解析。很长时间)。我没有做任何研究。从BeautifulSoup.__init__方法调用self._feed()方法,另一方面调用LXMLTreeBuilder.feed()(这是非常耗时的操作。这就是您{{ 1}}实例创建是如此缓慢。如果时间对您而言如此重要,请使用普通的BeautifulSoup库。

LXML

lxml doc.