我试图使用Python在基于ajax的网站(如www.snapbird.org)上检索查询结果。由于它不显示在页面源中,我不知道如何继续。 我是一个Python新手,因此如果我能够在正确的方向得到一个指针,那将是非常好的。 如果这更容易,我也愿意接受其他一些处理任务的方法使用Python从基于AJAX的站点提取信息
回答
这将会很复杂,但作为开始,请找到在处理AJAX请求时调用的URL。你可以直接在Python程序中调用它并解析输出。
您可以使用Selenium的Python client driver来解析页面源代码。我通常将这个与PyQuery结合使用,以使网页抓取更容易。
这是basic tutorial for Selenium's Python driver。请务必遵循Selenium版本而不是版本1的说明(除非由于某种原因使用版本1)。
您也可以将chrome/firefox配置为HTTP代理,然后使用代理登录/提取必要的内容。我使用python代理来修改/保存/记录基于内容类型或URI的请求/内容。
对于其他项目,我已经写了特定网站的JavaScript小书签其轮询新数据,然后将它发送到我的服务器(通过动态创建两个表单和iframe,并设置myform.target=myiframe;
其他JavaScript脚本/书签工具模拟一个用户与网站进行交互,所以不用每隔几秒轮询一次javascript就会自动点击按钮和表单提交等等。当然,这些脚本总是非常特定于站点,但它们对我来说非常有用,特别是在遍历所有脚本时给定搜索的分页结果。
这里是一个精简版的“pag” (inate)“结果并准备将数据发送到我的服务器(然后使用BeautifulSoup进一步解析它)。特别是这是为Youtube的发送/收件箱邮件而设计的。
var tables = [];
function process_and_repeat(){
if(!(inbox && inbox.message_pane_ && inbox.message_pane_.innerHTML)){
alert("We've got no data!");
}
if(inbox.message_pane_.innerHTML.indexOf('<table') === 0)
{
tables.push(inbox.message_pane_.innerHTML);
inbox.next_page();
setTimeout("process_and_repeat()",3000);
}
else{
alert("Fininshed, [" + tables.length + " processed]");
document.write('<form action=http://curl.sente.cc method=POST><textarea name=sent.html>'+escape(tables.join('\n'))+'</textarea><input type=submit></form>')
}
}
process_and_repeat(); // now we wait and watch as all the paginated pages are viewed :)
这是一个简化的例子,没有任何花哨的iframes/non-essentials,这只是增加了复杂性。
除了Liam的说法,Selenium也是一个很好的工具,它有助于我的各种刮擦需求。如果您愿意,我会很乐意帮助您。
一个简单的解决方案可能是使用像Mechanize这样的浏览器。因此,您可以浏览网站,关注链接,进行搜索以及使用带有用户界面的浏览器执行的几乎所有操作。
但对于一个非常sepcific工作,你甚至可能不会需要这样的库,你可以使用urllib
和urllib2
Python库进行连接,并读取响应...您可以使用Firebug看到搜索的数据结构和应对机构。然后用urllib
做出相关参数的请求...
举一个例子...
我与joyvalencia
搜索和检查请求的URL与萤火虫看到:
http://api.twitter.com/1/statuses/user_timeline.json?screen_name=joyvalencia&count=100&page=2&include_rts=true&callback=twitterlib17083330
所以调用此URL以urllib2.urlopen()
将与制作上Snapbird查询相同。响应体是:
twitterlib17083330([{"id_str":"131548107799396357","place":null,"geo":null,"in_reply_to_user_id_str":null,"coordinates":.......
当您使用urlopen()
和读取响应,上线就是你......然后你就可以使用json
库蟒读取数据,并将其解析到Python的数据结构...
- 1. 使用python从网站获取信息
- 2. 从网站提取信息
- 3. 提取从网站使用BeautifulSoup(Python)的具体信息
- 4. 使用Python从shapefile中提取信息
- 5. 从外部网站提取信息
- 6. 使用codeigniter从数据库获取基本站点信息的最佳方式
- 7. 使用Python提取LinkedIn信息
- 8. 基于其他字段的值从python的json输入中提取信息
- 9. 如何使用C#从网站中提取确切的信息?
- 10. 使用Selenium Python仅从网站提取所需的详细信息
- 11. 使用Jsoup从网站获取信息
- 12. 基于ID的jQuery ajax加载信息
- 13. 从python提取特定信息来源:
- 14. Python - 从数据框提取信息(JSON)
- 15. 查询从一个表中提取信息基于其他
- 16. 使用jQuery从XML中提取信息
- 17. 使用Mathematica从HTML中提取信息
- 18. 使用DOM从XML中提取信息?
- 19. 使用Powershell从SQL Server提取信息
- 20. 使用Python从推文中提取用户信息
- 21. 完全基于ajax的站点的htaccess
- 22. 使用Python从SQL表获取信息
- 23. 使用XPath提取信息
- 24. Azure Python SDK问题 - 从RoleInstance中提取端点信息
- 25. 使用python从网页中提取信息
- 26. 使用python从url中提取javascript信息
- 27. 如何使用Python从HTML文档中提取信息?
- 28. 使用Python从SGM文件中提取信息
- 29. 使用从python函数向模板提取信息
- 30. 无法使用python从Linux shell命令提取信息