使用 webkitbrowser 获取通过注入 javascript 修改的输入文本的值时出错
Error getting value of input text modified by injected javascript with webkitbrowser
我在 Python 2.7 中使用 WebkitBrower 从网页获取输入文本的值时遇到问题。
示例代码如下:
from webscraping import webkit, xpath
url = 'https://duckduckgo.com/?q=webscraping'
user_agent='Mozilla/5.0 (compatible; MSIE 9.0; TOB 6.11; Windows NT 6.1; WOW64; Trident/5.0; MAAU)'
w = webkit.WebkitBrowser(gui=True,user_agent=user_agent)
w.get(url)
token = xpath.get(w.current_html(), '//input[@id="search_form_input"]/@value')
print token
script = """
$('#search_form_input').val('555555');
"""
w.js(script)
w.wait(2)
token = xpath.get(w.current_html(), '//input[@id="search_form_input"]/@value')
print token
示例的输出是:
webscraping
webscraping
而不是
webscraping
555555
xpath 工作正常(找到控件),但 return 注入的脚本修改的值没有。
在显示的网页上修改输入。
提前致谢,新年快乐!
我找到了一种方法来完成这项工作。
问题出在脚本中...必须使用 'attr' 方法设置属性值:
script = """
$('#search_form_input').val('555555');
$('#search_form_input').attr('value','555555');
"""
我在 Python 2.7 中使用 WebkitBrower 从网页获取输入文本的值时遇到问题。
示例代码如下:
from webscraping import webkit, xpath
url = 'https://duckduckgo.com/?q=webscraping'
user_agent='Mozilla/5.0 (compatible; MSIE 9.0; TOB 6.11; Windows NT 6.1; WOW64; Trident/5.0; MAAU)'
w = webkit.WebkitBrowser(gui=True,user_agent=user_agent)
w.get(url)
token = xpath.get(w.current_html(), '//input[@id="search_form_input"]/@value')
print token
script = """
$('#search_form_input').val('555555');
"""
w.js(script)
w.wait(2)
token = xpath.get(w.current_html(), '//input[@id="search_form_input"]/@value')
print token
示例的输出是:
webscraping
webscraping
而不是
webscraping
555555
xpath 工作正常(找到控件),但 return 注入的脚本修改的值没有。
在显示的网页上修改输入。
提前致谢,新年快乐!
我找到了一种方法来完成这项工作。
问题出在脚本中...必须使用 'attr' 方法设置属性值:
script = """
$('#search_form_input').val('555555');
$('#search_form_input').attr('value','555555');
"""