我已经设置了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
元素列表?我如何做到这一点?
答案 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)