import requests
x=requests.get("http://www.ip-score.com/")
import bs4
soup=bs4.BeautifulSoup(x.text,"lxml")
x=soup.find("span",{"id":"spamhouse"})
print(x.getText())
但它只显示' ' 即空字符串
但它应该显示" Clear"或" LowRisk"
答案 0 :(得分:2)
span标记中的内容通过xhr请求加载到ajax api:/ajax_handler/check_bl/all
(通过检查浏览器中的网络流量找到)。
您可以从api获得json响应,但首先您必须从页面获取IP。
import requests
import bs4
r = requests.get("http://www.ip-score.com")
ip = bs4.BeautifulSoup(r.text, "lxml").select_one("div#MaxMind a").string
r = requests.post('http://www.ip-score.com/ajax_handler/check_bl/all', data={'ip':ip})
data = r.json()['spamhouse']
print(data)
或者,您可以将selenium
用于js生成的内容。