- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在“无限滚动”网页中获取由 xpath 标识的元素,如 this .问题是,当我将 Selenium 与 webdriver PhantomJS 一起使用时,它只需要一些链接,第一个链接是在页面加载后加载的。我尝试增加 time.sleep() 或在代码中插入更多但不起作用。如果我像使用 webdriver 一样使用 Firefox,它运行良好。
有可能解决这个问题并改进我的代码吗?也许不使用时间事件,而是寻找可以判断页面是否下降的东西。
谢谢和问候
import re
import mechanize
from pydblite import Base
from selenium import webdriver
import platform
import codecs
import scrapy
import time
from selenium.webdriver.common.keys import Keys
class getFrom(object):
def scrapying(self):
print platform.system()
#browser = webdriver.Firefox()
browser = webdriver.PhantomJS(executable_path='/usr/local/bin/node_modules/phantomjs/lib/phantom/bin/phantomjs')
browser.get("https://medium.com/top-100/december-2013")
time.sleep(5)
elem = browser.find_element_by_tag_name("body")
no_of_pagedowns = 200
while no_of_pagedowns:
elem.send_keys(Keys.PAGE_DOWN)
time.sleep(0.02)
no_of_pagedowns-=1
#Qui ci dovrebbe essere lo spider
post_elems = browser.find_elements_by_class_name("graf--h2")
#Fine Spider
for post in post_elems:
print post.text
browser.quit()
myClassObject = getFrom()
myClassObject.scrapying()
最佳答案
我这样修改了我的代码:
import re
import mechanize
from pydblite import Base
from selenium import webdriver
import platform
import codecs
import scrapy
import time
from selenium.webdriver.common.keys import Keys
class getFrom(object):
def scrapying(self):
print platform.system()
if platform.system()=="Windows":
browser = webdriver.Firefox()
else:
#browser = webdriver.Firefox()
browser = webdriver.PhantomJS(executable_path='/usr/local/bin/node_modules/phantomjs/lib/phantom/bin/phantomjs')
browser.get("https://medium.com/top-100/december-2013")
time.sleep(5)
elem = browser.find_element_by_tag_name("body")
mins = raw_input("For how many minutes you want to scrapy the links? ")
print "start: "+ time.asctime( time.localtime(time.time()) )
timeout = time.time() + 60* int(mins) # 5 minutes from now
while True:
test = 0
elem.send_keys(Keys.PAGE_DOWN)
time.sleep(0.5)
if test == 5 or time.time() > timeout:
print "end: "+ time.asctime( time.localtime(time.time()) )
break
test = test - 1
#Qui ci dovrebbe essere lo spider
post_elems = browser.find_elements_by_class_name("graf--h2")
#Fine Spider
for post in post_elems:
print post.text
browser.quit()
myClassObject = getFrom()
myClassObject.scrapying()
现在工作正常。我删除了 for 循环添加了一个时间控制来处理获得很少结果或很多结果的可能性。但最重要的是使用这个 javascript 函数: browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
代替 send_keys
关于python - 将 elem.send_keys 用于页面中的句柄 "Infinite Scroll"。在 Python 中使用 Selenium PhantomJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32876282/
我正在尝试构建一个函数来清除字段和 send_keys,但出现错误。看我的代码: base.py class Page(object): def clear_sendkeys(self, *l
我想将文本发送到页面的文本框。 这是页面上的隐藏元素: Topics 我可以点击文本框但无法发送文本的代码: textbox = [tag for tag in driver.find_elemen
我正在编写一个用于填写表格的脚本。它将具有特定值的字符串发送到应输入该值的文本字段。然而,虽然文本字段总是被输入,但字符有时会变得困惑。例如,在一个字段中,要输入的值为: 42042042042042
我正在使用带有 chromedriver 的 Python Selenium 进行自动化测试。 下面是代码示例: inputElement.send_keys(2356785)
我正在自动化一个在线应用程序,并试图让每个“.send_keys()”更加真实。 id 不是立即用“name@email.com”猛击文本字段,而是在击键之间有一个小的延迟,这样看起来就像是人在打字而
我想从 Selenium 切换到 Poltergeist,但我需要模拟一个条形码扫描仪,看起来像键盘输入 标签。我将此代码与 Selenium 一起使用: native.send_keys(send_
我有一个脚本可以打开 eBay 并自动化购买过程,并且它可以工作......一段时间。经过一系列循环后,它随机开始跳过向文本字段发送数据。该脚本第一次总是会完美运行,但在第二次或第十次迭代之间偶尔会崩
我正在自动化一个在线应用程序,并试图让每个“.send_keys()”更加真实。 id 不是立即用“name@email.com”猛击文本字段,而是在击键之间有一个小的延迟,这样看起来就像是人在打字而
在Selenium中我想输入一个测试字符串“hello'world”,但是网页的文本框变成了“helloworld”。就好像撇号不存在一样。将 "'" 替换为 chr(39) 或拆分字符串也不起作用。
我是自动化领域的新手。我正在尝试在 Omegle 的文本框中输入一个字符串并按 Enter 键,但它显示了一个错误: selenium.common.exceptions.ElementNotInte
我正在尝试在Python中使用Selenium,因为我是这样做的初学者,所以我无法让send_key工作,但很可能它是直接的,我错过了一些东西。 这是我迄今为止所做的示例: from selenium
我尝试将价格填充到输入元素中。我尝试了很多方法但都失败了,我意识到它可能被另一个元素覆盖了。当我将鼠标指向该字段时,它会自动显示工具提示。而且我还看到检查框中出现了一些 HTML 代码行。 图 1:当
当我用 PhantomJS 和 selenium 运行我的代码时,res 显示 act,但是在 send_keys 中代码不会继续,只是停留在,没有错,没有任何答案,也没有停留。我只想知道为什么. r
这个问题已经有答案了: Stale element exception python (2 个回答) Selenium clicks one time, but next click returns
我正在使用selenium来抓取twitter(不使用api只是练习selenium),当它进入以下页面时需要登录,我使用以下代码来找到登录输入字段,然后发送用户名和密码字符串: from selen
问题 我正在尝试通过键入页码并单击回车来使用 selenium 更改数据库的页面(ReferenceUSA,需要付费或大学证书),但要注意的是搜索框位于 div 标记中。 send_keys() 仅适
我的问题:我有一个填充字段的方法,但问题是 selenium 没有将完整的字符串发送到该字段,所以我的断言在验证时失败了。 我的代码: var webdriver = require('seleniu
我正在尝试使用 selenium 的 send_keys 将表情符号字符发送到具有以下 python 代码的文本框。 browser = webdriver.Chrome(chrome_options
我知道如何用下一个代码慢慢打字: elem = driver.find_element_by_id("mainCommentForm") text = "To type text here" for
我正在尝试将_keys 发送到 webelement 但每次我都会收到此错误 driver.send_keys("admin") AttributeError: 'WebDriver' object
我是一名优秀的程序员,十分优秀!