【问题标题】:PhantomJS not retrieving correct dataPhantomJS 没有检索到正确的数据
【发布时间】:2018-02-13 15:01:47
【问题描述】:

我正在尝试使用 phantomjs 抓取包含 javascript 的网页。我找到了一个按钮元素,当我单击它时,它会显示渲染下一个链接。但我没有得到我想要的确切输出。相反,我得到了不需要的不同输出。

代码是:

from bs4 import BeautifulSoup
import requests
from selenium import webdriver
s = requests.session()
fg =s.get('https://in.bookmyshow.com/booktickets/INCM/32076',headers=headers)
so = BeautifulSoup(fg.text,"html.parser")
texts = so.findAll("div",{"class":"__buytickets"})
print(texts[0].a['href'])
print(fg.url)
driver = webdriver.PhantomJS()
driver.get(movie_links[0])
element = driver.find_element_by_class_name('__buytickets')
element.click()
print(driver.current_url)

我得到的输出是:

javascript:;
https://in.bookmyshow.com/booktickets/INCM/32076
https://in.bookmyshow.com/booktickets/INVB/47680

我必须得到的是:

javascript:;
https://in.bookmyshow.com/booktickets/INCM/32076
https://in.bookmyshow.com/booktickets/INCM/32076#Seatlayout

实际上,我必须获取的链接是由上一个链接的 javascript 生成的。如何获取此链接? (座位布局链接)请帮忙!提前致谢。

【问题讨论】:

  • 我建议您使用 Mozilla 或 Chrome 驱动程序,以便您可以在浏览器中查看页面。然后使用调试器,例如 PyCharm 自带的调试器,并设置断点。然后,您可以单步执行您的代码并手动检查加载页面的 Web 元素。
  • 你在哪里定义s
  • 问题是,浏览器不应该打开。与此相比,它需要很多时间
  • 当你有一个可以正常运行的程序后,你可以在没有浏览器的情况下将它改回无头模式。但是如果代码不正确,速度就没有意义。你可以随心所欲地跑,但你仍然会得到错误的答案……只是更快。
  • 对不起,我没有添加 session() 代码,现在我添加了它

标签: javascript python beautifulsoup phantomjs


【解决方案1】:

根据我的经验,PhantomJS 不能很好地工作。
Сhrome 和 Mozilla 更好。
Vitaly Slobodin https://github.com/Vitallium 表示不会开发更多 Phantomjs。

使用 Headless Chrome 或 Firefox。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 2018-12-15
    • 2021-01-26
    • 1970-01-01
    相关资源
    最近更新 更多