写 Scrapy 爬虫时,遇到了 js 进行跳转的页面,大家有没有好的解决方法

2018-09-04 09:33:52 +08:00
 wylwang
请求时返回的相应内容是这样:
<html><head></head><body><script>window.location.href='https://XXX.xxx.com/';</script></body></html>
之前使用过 selenium 抓数据,但是效率太低,所以想请问一下大家有没有好的办法,在 scrapy 框架里拿到正常响应的请求
8389 次点击
所在节点    Python
20 条回复
locusxt
2018-09-04 09:35:27 +08:00
顺着这个 href 接着爬就可以了
toono
2018-09-04 09:35:35 +08:00
我之前的做法就是分析他们的 API
wylwang
2018-09-04 09:38:18 +08:00
这个问题已经困了我一周,查了挺多资料,还是没办法,求大佬支招
whwq2012
2018-09-04 09:38:28 +08:00
if 返回码== 3xx 跟着跳转
bmos
2018-09-04 09:39:55 +08:00
首先和 1 楼说的,顺着 href 爬。
不行的话看看是不是需要 cookie,我之前提问过,有的网站需要判断 cookie 值,没有的话,就会要求 js 跳转,有 cookie 就可以直接访问。
还有其他措施,要具体分析
crazycabbage
2018-09-04 09:43:07 +08:00
返回链接继续爬,遇到 js 生成页面用 splash,不要用 selenium
uwh0am1
2018-09-04 09:46:29 +08:00
splash 把,使用 qt 中的 webview 加载页面,可以运行页面中的 js 代码,使用简单
wylwang
2018-09-04 09:50:33 +08:00
@whwq2012 所有返回这行代码的页面响应码都是 200,
encro
2018-09-04 09:58:43 +08:00
如果只是这个,正则匹配下 url 继续爬啊
wylwang
2018-09-04 10:05:13 +08:00
@bmos 忘了说,返回的 url 和请求的 url 是同一个,顺着 href 继续爬的话会无限循环这个响应内容
wylwang
2018-09-04 10:10:43 +08:00
@uwh0am1 splash 我也考虑过,我的需求是请求索引页-->详情页-->详情页里的某个 href 字段共三级页面,实现起来比较麻烦
huaerxiela
2018-09-04 10:50:19 +08:00
既然是无限循环的情况,可能是服务器验证有问题,要么你代码请求不规范,要么就是被反爬拦截了,排除代码问题后,着重看 cookie 变化或者 js 加密参数的情况
frankyxu
2018-09-04 10:52:58 +08:00
5 楼说的有道理,可能是你没带 cookie 访问,我最近刚好也遇到了这个问题,带上 cookie 就好了
wylwang
2018-09-04 11:25:25 +08:00
@frankyxu 对的,确实是这个问题,带上 cookie 可以成功访问了
wylwang
2018-09-04 11:26:16 +08:00
@huaerxiela 是的,是因为没带 cookie,已经解决了,:)
testsec
2018-09-04 12:46:36 +08:00
一般这种是要带上 cookie 去访问的
hjzkenan
2018-09-04 17:29:26 +08:00
啥网站呀,贴出来看看?
wylwang
2018-09-05 15:28:20 +08:00
kidlfy
2018-09-06 09:21:42 +08:00
@wylwang 想问一下,cookie 失效了要怎么办,只有更换这一种方法吗
yangyaofei
2018-09-25 15:47:51 +08:00
@wylwang 同样这个网站出这个问题,我发现直接用 requests 就可以...所以....这是为啥...

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

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

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

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

© 2021 V2EX