美丽的汤元素没有返回文本

时间:2017-08-30 14:34:04

标签: python-3.x beautifulsoup

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"

1 个答案:

答案 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生成的内容。