【发布时间】:2016-04-12 11:16:43
【问题描述】:
我一直在尝试抓取一个网站(使用 Python/Selenium),其中包含部分 JS 构建的链接和内容。在我的情况下,我想获得的链接如下所示:http://www.somesite.de/blah/{{link_ID}}
由于不能简单地直接抓取这个 URL,我的 Python 代码如下:
def URL_from_JS (URL):
driver = webdriver.PhantomJS(executable_path=r'C:\###\phantomjs-2.1.1-windows\bin\phantomjs.exe')
driver.get(URL)
link = driver.find_element_by_xpath('//a[@title="Zum Expose"]')
new_URL = link.get_attribute('href')
print(new_URL) #for testing reasons
driver.close()
return new_URL
这按预期工作,但是显然没有执行 JS 代码,因为结果与上面写的完全一样(即 http://www.somesite.de/blah/{{link_ID}} )。等待元素变得可见只会导致超时错误。 {{link_ID}} 引用了在一些外部 .js 文件中使用的变量,该变量是在 HTML 代码中的上面的一些行中导入的。
我必须手动执行导入的 Javascript 代码吗?我完全不知道为什么我的代码没有按预期工作......
感谢您的帮助!
【问题讨论】:
-
如何将字符串从
JS文件发送到Python代码? -
不太明白你的问题:我不会将字符串 vom JS 发送到 Python。 JS 代码很可能会使用 driver.execute_script 在 Python 中执行,但根据我对 Selenium 工作原理的理解,这实际上应该是不必要的。
-
ok....
{{link_ID}}来自哪里?提供包含href="http://www.somesite.de/blah/{{link_ID}}"的链接的HTML代码示例 -
给你:immobilienscout24.de/neubau/formart/altoh-na-hamburg.html 编辑:尊敬的链接地址是immobilienscout24.de/expose/87513140(这栋楼里要买的第一套公寓)
标签: javascript python selenium