如何使用Scrapy

时间:2019-06-21 12:49:12

标签: python scrapy

链接到网站-http://www.prsuuniv.in/login?logout#

转到网站后,单击导航栏上的“结果”选项卡,然后选择“ sem-exam 2018年1月19日”

2 个答案:

答案 0 :(得分:0)

我认为您可能想改为Selenium

您链接的网站使用Javascript调用结果窗口。您根本无法在网页的HTML源代码中找到它。

Selenium的作用是模拟一个启用了javascript的浏览器。您可以查找元素,等待它们加载,然后单击它们。

答案 1 :(得分:0)

您需要进行一些逆向工程,方法是使用现代浏览器的开发人员工具浏览网站并从该网站中读取一些js代码。

我这样做是发现: 表单是从http://www.prsuuniv.in/home/result19加载的, 填写表单并单击“搜索”按钮后,它将执行ajax请求。 Ajax请求URL是根据字段值生成的

var urlname="/home/student/result/msw/check19/"+semester+"/"+studentty+"/"+examroll+"/"+coursename+"/resultrack";
这4个字段值中的

3个只是所选选项的值,而examroll是用一些随机值和所选选项值

生成的
var examroll= btoa(Math.floor(1000 + Math.random() * 9000)+$('#examroll').val()+"@@"+Math.floor(1000 + Math.random() * 9000));

并且所有字段都是base64编码的,您需要使用相同的方法来生成此URL。

因此,只需通过输入值构建URL并发送一个Request,如果您的Spider收到了选项标签(例如Course name=B.Com.)作为输入,那么您需要先请求http://www.prsuuniv.in/home/result19,然后通过B.Com.bcom操作将xpath转换为实际值css,否则只需发送带有内置URL的结果请求即可。

还请注意,您需要传递与浏览器相同的标头,例如X-Requested-With: XMLHttpRequest,才能获得与浏览器相同的结果。