gpt4 book ai didi

python - 解析时获取空列表

转载 作者:行者123 更新时间:2023-12-01 03:55:33 25 4
gpt4 key购买 nike

我正在解析 jeevansathi.com 并想要选择 <ul> id #profileInfo2但使用 BeautifulSoup 后我得到空列表下面是代码和输出

import requests, bs4
res = requests.get('http://www.jeevansathi.com/search/quick/169903999/1')
try:
res.raise_for_status()
nazia=bs4.BeautifulSoup(res.text)
print type(nazia)
elems=nazia.select("#profileInfo2")
print type(elems)
print len(elems)
except Exception as exc:
print("There was a problem: %s" % (exc))

输出为

<class 'bs4.BeautifulSoup'>
<type 'list'>
0

最佳答案

内容是动态加载的,您可以在请求返回的内容中看到它的模板,或者在浏览器中查看查看源代码:

<div class="pt10 fontlig colr4 clearfix ulinline">
<ul id="profileInfo{profileNoId}" class="fl f14 wid83p descplist">
<li class="textTru">{age}, {height}</li>
<li class="textTru">{edu_level_new}</li>
<li class="textTru">{location}</li>
<li class="textTru">{occupation}</li>
<li class="textTru">{religion}, {caste}</li>
<li class="textTru">{income}</li>
<li class="textTru">{mtongue}</li>
<li class="textTru">{mstatus}</li>
</ul>

您可以使用selenium获取您在浏览器中看到的源代码,将其与 phantomjs 结合使用对于 headless 浏览:

from selenium import webdriver

dr = webdriver.PhantomJS()

dr.get('http://www.jeevansathi.com/search/quick/169903999/1')
ul = dr.find_element_by_id("profileInfo2")
print()

这将为您提供带有 id profileInfo2 的 ul,如果您想要其中的每个 li,您还可以使用 css 选择器:

lis = dr.find_elements_by_css_selector("#profileInfo2  li")

并从每个中提取文本:

 [li.text for li in lis])

您可能想要所有可以获得的 ul:

all_uls = dr.find_elements_by_css_selector("ul[id^=profileInfo]")

关于python - 解析时获取空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37509979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com