PyQuery不会返回页面上的元素

时间:2019-08-11 22:48:14

标签: python python-3.x web-scraping pyquery

我已经设置了Python脚本以使用PyQuery打开此网页。

import requests
from pyquery import PyQuery

url = "http://www.floridaleagueofcities.com/widgets/cityofficials?CityID=101"
page = requests.get(url)
pqPage = PyQuery(page.content)

但是pqPage("li")仅返回空白列表[]。同时,pqPage.text()显示页面的HTML文本,其中包含li元素。

代码为什么不返回li元素列表?我如何做到这一点?

1 个答案:

答案 0 :(得分:1)

似乎PyQuery无法使用此页面-可能是因为它是xhtml页面。也许是因为它使用名称空间xmlns="http://www.w3.org/1999/xhtml"

当我使用

pqPage.css('li')

然后我得到

[<{http://www.w3.org/1999/xhtml}html#sfFrontendHtml>]

其中在元素中显示{http://www.w3.org/1999/xhtml}-它是namespace。某些模块在使用命名空间的HTML上存在问题。


我没有问题可以使用Beautifulsoup

import requests
from bs4 import BeautifulSoup as BS

url = "http://www.floridaleagueofcities.com/widgets/cityofficials?CityID=101"
page = requests.get(url)

soup = BS(page.text, 'html.parser')
for item in soup.find_all('li'):
    print(item.text)

编辑:在Google中进行挖掘后,我发现使用parser="html"中的PyQuery()可以得到li

import requests
from pyquery import PyQuery

url = "http://www.floridaleagueofcities.com/widgets/cityofficials?CityID=101"
page = requests.get(url)

pqPage = PyQuery(page.text, parser="html")
for item in pqPage('li p'):
    print(item.text)