美丽的温馨汤元不返回文本
问题描述:
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())
但它只是显示“” 即空字符串美丽的温馨汤元不返回文本
但它应显示“清除”或“低风险”
答
在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生成的内容。
+0
哇。你是如何找到ajax api和它接受的数据的? – Stergios
+1
@Stergios在浏览器中打开该页面,使用检查,转到网络选项卡并按xhr筛选。您会注意到api的POST请求。如果你点击它,你会看到标题中的发布数据(或Firefox的参数)选项卡。 –
在页面源代码中,我看到:',所以正常情况下会得到一个空字符串。你想捕捉哪一页的部分? – Stergios
根据您对@Stergios的回复,您可能需要使用其他软件产品(如硒)来刮取您想要的东西。 –