所以我正在执行 omegle 抓取,试图抓取在线用户。
这是 HTML 代码:
<div id="onlinecount">
<strong>
30,000+
</strong>
</div>
现在我假设使用 LXML 会 //div[@id="onlinecount"]
来抓取 中的任何文本,我想从标签中获取数字,但是当我尝试抓取这个,结果只是得到一个空列表
这是我的相关代码:
print "\n Grabbing users online now from",self.website
site = requests.get(self.website)
tree = html.fromstring(site.text)
users = tree.xpath('//div[@id="onlinecount"]')
请注意,self.website 变量只是 http://www.omegle.com
你知道我做错了什么吗?请注意,我可以抓取其他部分,但不能抓取在线用户数。
我最终使用了从 friend 那里学到的一组不同的代码。 这是我的完整代码,供感兴趣的人引用。 http://pastebin.com/u1kTLZtJ
最佳答案
当您使用 requests python 模块向“http://www.omegle.com”发送 GET 请求时,我观察到 site.text 中没有“onlinecount”。原因是该部分是由 JavaScript 呈现的。您应该使用能够执行 JavaScript 并为您提供在浏览器中呈现的最终 html 源的库。 Selenium 就是这样的一个第三方库 http://selenium-python.readthedocs.org/ 。唯一的缺点是它打开一个真正的网络浏览器。
下面是使用 selenium 的工作代码和附加的屏幕截图:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.omegle.com")
element = browser.find_element_by_id("onlinecount")
onlinecount = element.find_element_by_tag_name("strong")
关于python - omegle lxml 抓取不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20977981/