我设置了PhantomJS并将其录制到视频:https://www.dailymotion.com/video/xnizmh_1_webcam
构建说明:http://phantomjs.org/build.html
我的设置有什么问题吗?
在我设置之后,我阅读了快速入门教程并尝试编写此代码
phantomjs hello.js
Run Code Online (Sandbox Code Playgroud)
它给了我"命令未找到"错误.我怎么解决这个问题?
我需要一个相当容易使用的无头浏览器(我仍然是相当新的Python和一般的编程),这将允许我导航到一个页面,登录到需要Javascript的表单,然后通过以下方式刮擦生成的网页搜索符合特定条件的结果,单击复选框,然后单击以下载文件.所有这些都需要Javascript.
我听到无头浏览器是我想要的 - 需求/偏好是我能够从Python运行它,并且最好是生成的脚本可以通过py2exe编译(我正在为其他用户编写这个程序).
到目前为止风车看起来很像我想要的,但我不确定.
任何想法赞赏!
我是PhantomJs的新手.刚查看了这个网站上的类似帖子.我的问题是为什么'foo'没有登录到控制台或打印?
var page = require('webpage').create()
var foo = 42;
function evaluate(page, func) {
var args = [].slice.call(arguments, 2);
var fn = "function() { return (" + func.toString() + ").apply(this, " + JSON.stringify(args) + ");}";
return page.evaluate(fn);
}
page.open('http://google.com', function() {
var foo = 42;
evaluate(page, function(foo) {
console.log(foo);
},foo);
});
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何通过HTTP代理路由我的请求.
我正在初始化这样的webdriver:
user_agent = 'my user agent 1.0'
DesiredCapabilities.PHANTOMJS['phantomjs.page.settings.userAgent'] = user_agent
driver = webdriver.PhantomJS()
Run Code Online (Sandbox Code Playgroud)
我已经浏览了文档和源代码,似乎无法通过webdriver找到使用phantomjs代理服务器的方法.
有什么建议?
我需要用python抓一个站点.我获得与urlib模块的源HTML代码,但我需要也刮由一个JavaScript功能(这是包含在HTML源)中产生一些HTML代码.这个功能在网站中的作用是当你按下一个按钮时输出一些HTML代码.如何用python代码"按下"这个按钮?scrapy可以帮助我吗?我用firebug捕获了POST请求,但是当我尝试在url上传递它时,我收到403错误.有什么建议?
我想在运行时运行一些自定义代码pip uninstall,清理在安装时创建的文件.我该怎么办呢?
我在setup.py中使用以下命令运行自定义安装代码:
from setuptools import setup
from setuptools.command.install import install
class CustomInstallCommand(install):
def run(self):
#Custom code here
install.run(self)
...
setup(
...
cmdclass = {
'install':CustomInstallCommand
}
)
Run Code Online (Sandbox Code Playgroud)
但尝试类似的setuptools.command.uninstall或from setuptools.command.install import uninstall失败的东西,因为那些模块/名称不存在.
我正在按照这里提到的说明进行操作:https : //api.stackexchange.com/docs/authentication
但是由于没有提供任何代码,因此我无法正确理解流程。
我一直在尝试使用下面的两种方法来完成身份验证部分,但是我遇到了麻烦。
import requests
from pprint import pprint
resp = requests.get('https://stackexchange.com/oauth/dialog?client_id=6667&scope=private_info&redirect_uri=https://stackexchange.com/oauth/login_success/')
pprint(vars(resp))
Run Code Online (Sandbox Code Playgroud)
import oauth2 as oauth
from pprint import pprint
url = 'https://www.stackexchange.com'
request_token_url = '%s/oauth/' % url
access_token_url = '%s/' % url
consumer = oauth.Consumer(key='mykey',
secret='mysecret')
client = oauth.Client(consumer)
response, content = client.request(request_token_url, 'GET')
print(response, content)
Run Code Online (Sandbox Code Playgroud)
我不确定如何从这里前进?我需要使用返回的访问令牌,并使用它来查询API。样例代码确实非常有帮助!谢谢。
编辑:这是我当前使用的代码:
from requests_oauthlib import OAuth2Session
from pprint import pprint
client_id = 'x'
client_secret = 'x'
redirect_uri = 'https://stackexchange.com/oauth/login_success'
scope = 'no_expiry'
oauth = OAuth2Session(client_id, redirect_uri=redirect_uri, scope=scope) …Run Code Online (Sandbox Code Playgroud) 我有这个小网站,我想用请求库填写表格.问题是,当填写表单数据并按下按钮时,我无法进入下一个站点(Enter不起作用).
重要的是我不能通过某种点击机器人来做到这一点.这需要完成,所以我可以在没有图形的情况下运行.
info = {'name':'JohnJohn',
'message':'XXX',
'sign':"XXX",
'step':'1'}
Run Code Online (Sandbox Code Playgroud)
前三个条目名称,消息,标志是文本区域,步骤是我认为的按钮.
r = requests.get(url)
r = requests.post(url, data=info)
print(r.text)
Run Code Online (Sandbox Code Playgroud)
当我通过chrome手动发送请求时,表单数据看起来像这样:
button元素如下所示:
<td colspan="2" style="text-align: center;">
<input name="step" type="hidden" value="1">
<button id="button" type="button" onclick="myClick();"
style="background-color: #ef4023; width: 80px; font-face: times; font-size: 14pt;">
Wy?lij
</button>
</td>Run Code Online (Sandbox Code Playgroud)
如果我手动执行此操作,下一个站点具有相同的地址.
python ×6
phantomjs ×3
javascript ×2
bots ×1
browser ×1
ghostdriver ×1
installation ×1
linux ×1
oauth-2.0 ×1
pip ×1
proxy ×1
setup.py ×1
setuptools ×1
ubuntu ×1
web-scraping ×1
webdriver ×1