爬虫新手求助

2015-05-28 11:52:28 +08:00
 freeman49
用requests和beautifulsoup想把下面这个页面里的每一个subject下所有课程代码和课名抓出来
https://courses.students.ubc.ca/cs/main?sessyr=2015&sesscd=S

但是这个页面被js渲染过,bs4解析不出来内容,请问高手应该如何解决
2007 次点击
所在节点    Python
4 条回复
gkiwi
2015-05-28 12:07:57 +08:00
1. 如果你需要的数据是通过ajax异步过来的,你直接调用他的接口就好了。
2. 如果是渲染过来页面的时候,数据被写到了js里面,然后再拼接的,那你就用正则匹配下试试。
3. http://casperjs.org/ 那就用浏览器来执行js把。。

还有就是真不清楚你想抓什么。。youtube页面上的列表?
morefreeze
2015-05-28 21:32:25 +08:00
顶1楼,另外搜了下,除了casperjs还有phantomjs也可用,撸个脚本就把之后的表格打印或者存成图片,很方便。
var page = require('webpage').create();
system = require('system');
url = system.args[1];
page.open(url, function(status) {
var title = page.evaluate(function() {
var tbl = document.getElementById("mainTable");
return tbl.innerHTML;
});
console.log(title);
page.render('example.png');
phantom.exit();
});
保存成show_course.js

然后执行`phantomjs show_course.js > course.html`就行啦
morefreeze
2015-05-28 21:33:54 +08:00
@morefreeze 第二个参数是url,应该是phantomjs show_course.js your_url > course.html
latyas
2015-05-28 22:00:58 +08:00
js渲染过就分析js,
用phantomjs速度真是慢出翔

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/194351

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX