作者BigBank ( )
看板Python
标题Re: [问题] python 爬取pchome资料
时间Sat Aug 6 00:28:50 2016
各位前辈好,最近也在尝试爬pchome,虽然知道是javascript,但还是不太能解决
爬文後很幸运挖到这篇 也照了
这不是ptt大的code测试
1F:推 Thisisnotptt: 刚刚试了一下,应该是JS的问题,所以我改用selenium 04/11 13:38
但同样的code 执行好多次才能成功一次 是我的电脑业障重吗OAQQ
其余的失败也没什麽讯息 就是只抓回空壳 (我猜应该是没有成功执行js?)
我目前要做的 是已经有一堆pchome网址 想要从网址爬回对应商品
发现虽然head里的meta就有了 但也不知道该如何简单的只抓回这个部分
所以总结想请问各位前辈:
1.没办法每次都抓回网页,是pchome的防范机制吗?该何解QQ
2.还是说有更简单的方法可以只抓回head那个部分,觉得抓回整个网站有点overkilled
但现在就连硬要抓整个网站回来都做不到...( ̄▽ ̄#)﹏﹏
感谢各位前辈指点迷津OTZ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.231.153.225
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1470414533.A.802.html
3F:推 ripple0129: 其实就很单纯的观察封包伪装成浏览器送封包到server 08/06 05:00
pchome 这里似乎没有防 如果要爬露天可能就要伪装一下
4F:推 Thisisnotptt: 假如是偶尔成功 那可能是要加入延迟让网页跑完 08/06 20:46
5F:→ Thisisnotptt: 让javascript的内容被载入之後才抓得到 因为se是个 08/06 20:47
6F:→ Thisisnotptt: 浏览器 要给他点时间处理 08/06 20:47
8F:→ Thisisnotptt: 载入之後再进行抓取 08/06 20:49
9F:→ Thisisnotptt: 假如要摆脱 se 可以用post request的方式直接抓取 08/06 20:50
10F:→ Thisisnotptt: 内容 但是我之前对pchome采post/request的方式都一 08/06 20:51
11F:推 Thisisnotptt: 不太成功 se 搞起来比较方便就是了 缺点就是慢跟肥 08/06 20:53
12F:推 Thisisnotptt: 刚刚试了一下 request 的方式 OK了 不晓得之前是什 08/06 22:06
13F:→ Thisisnotptt: 麽问题卡住 总之应该还行 一样要加点delay会比较稳 08/06 22:07
非常感谢
这不是ptt大,也把解决步骤描述一下供後人参考:
测试几次後发现 的确是时间的问题 初步尝试加入
time.sleep()後能解决
但更好的解决方法似乎是
wait.until():
http://selenium-python.readthedocs.io/waits.html#explicit-waits
在这里我设定的是 等到
#PriceTotal载入为止 因为原本的框架没有这东西,如:
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#PriceTotal")))
至於直接request的部分 因为已经写好selenium了 之後改版再来研究看看好了A_A
※ 编辑: BigBank (36.231.153.225), 08/07/2016 01:31:04