如何解决Python Scrapy上的JavaScript重定向问题?
我是相当新的刮和以下文件刮的信息 使用我的脚本:如何解决Python Scrapy上的JavaScript重定向问题?,python,scrapy,Python,Scrapy,我是相当新的刮和以下文件刮的信息 使用我的脚本: import scrapy class CrwSpider(scrapy.Spider): name = "Otim" def start_requests(self): urls = [ 'https://pbejobbers.com/abrasives' ] for url in urls: yield scrapy.Requ
import scrapy
class CrwSpider(scrapy.Spider):
name = "Otim"
def start_requests(self):
urls = [
'https://pbejobbers.com/abrasives'
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
pattern = r'document\.location\.href=\"(:?.*)=1\";'
url = response.css('script::text').re_first(pattern)
print (url)
page = response.url.split("/")[-2]
filename = 'quotes-%s.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)
next_page = url+'=1'
if next_page is not None:
next_page = response.urljoin(next_page)
yield scrapy.Request(next_page, callback=self.parse)
当我运行爬虫程序时,我得到的不是实际的页面,而是javascript:
<html>
<body>
<script type="text/javascript" src="/aes.min.js"></script>
<script>
function toNumbers(d) {
var e = [];
d.replace(/(..)/g, function(d) {
e.push(parseInt(d, 16));
});
return e;
}
function toHex() {
for (
var d = [],
d =
1 == arguments.length && arguments[0].constructor == Array
? arguments[0]
: arguments,
e = "",
f = 0;
f < d.length;
f++
)
e += (16 > d[f] ? "0" : "") + d[f].toString(16);
return e.toLowerCase();
}
var a = toNumbers("de50860916c188904e9c359aaaf4f248"),
b = toNumbers("a944ac1efe048739325d92e58868ffa1"),
c = toNumbers("34d8ed644eb63ddaafeb01607ce6b6ce");
document.cookie =
"OCXS=" +
toHex(slowAES.decrypt(c, 2, a, b)) +
"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/";
document.location.href =
"http://pbejobbers.com/abrasives?81e93addddb02a10cd0652f09370ae96=2";
</script>
</body>
</html>
函数toNumbers(d){
var e=[];
d、 替换(/(..)/g,功能(d){
e、 push(parseInt(d,16));
});
返回e;
}
函数toHex(){
为了(
变量d=[],
d=
1==参数。长度和参数[0]。构造函数==数组
?参数[0]
:参数,
e=“”,
f=0;
fd[f]?“0”:“)+d[f].toString(16);
返回e.toLowerCase();
}
变量a=t编号(“de50860916c188904e9c359aaaf4f248”),
b=吨数(“a944ac1efe048739325d92e58868ffa1”),
c=吨数(“34d8ed644eb63ddaafeb01607ce6b6ce”);
document.cookie=
“OCXS=”+
toHex(slowAES.decrypt(c,2,a,b))+
“expires=Thu,37年12月31日23:55:55 GMT;path=/”;
document.location.href=
"http://pbejobbers.com/abrasives?81e93addddb02a10cd0652f09370ae96=2";
实际页面由产品卡列表组成。我注意到document.location.href
有一个新的url。所以我用正则表达式抓取它,并试图将它作为新的URL反馈给爬虫程序进行解析,但随后我得到了与=2
结束URL相同的结果。我似乎无法进入实际页面
如何获取重定向URL并使用它?我真的被卡住了 您不能使用Scrapy进入下一页。当您从检查工具中禁用JavaScript时,“下一步”按钮停止工作。Scrapy无法呈现JavaScript。您必须使用Selenium来刮取此页面。他们似乎花费了大量精力使网站尽可能难以刮取。我怀疑是否有一种解决方案会变成堆栈溢出答案的格式。