Re: 请益Request爬虫

楼主: lovdkkkk (dk)   2023-01-27 22:00:38
追了一天动漫来回点东西,
转生公主天才千金好香,枪神画面好屌
遇到问题时除了试着使用其它工具或做法,
还能做的 - 或许也是应该先做的 - 是了解问题。
或许你是后端工程师,对前端不熟,那看看你们公司有没有前端工程师可以问,
不然试着到前端社群上请益看看。
要爬 https://www.hktvmall.com/hktv/zh 这样一个网站需要注意什么?
怎么爬比较快?
或许有人看了看可以提供一些回馈,
例如有防 csrf 机制,token 就写在页面上一个隐藏的 input 里,
https://en.wikipedia.org/wiki/Cross-site_request_forgery
会直接跟页面 html 一起吐回来
后端用的应该是 JAVA,所以 cookie 有个 JSESSIONID,
不过因为它的设定是 http only 无法以 JS 取得
另外本身就神慢,不论是页面或 API 经常需要 10~30 秒
了解了问题之后,或许解法就不会是改用 Selenium 之外的工具,
而是使用 Selenium 但调整做法。
因为就算换了工具慢还是慢在网站本身
例如,一样先用 Selenium 连到该页面,
但是不再用操作页面连结的方式做,而是设法取得 CSRF token 组参数打 api,
使用 execute_script 应该就能在第一次页面加载后由 input 元素取得 CSRF token,
再使用 execute_async_script 打 api 取得资料
Ref : https://stackoverflow.com/q/28057338/1042731
而由于是实际跑在浏览器,可以正确的带上 JSESSION ID,
并且浏览器本身的同 domain request 数量限制会自动避免你变成 DDOS
(印像中是 4 或 8,不确定现在有没有改变)
而像以下是一个可以跑的 api 示例,我没怎么研究,
只是直接拿开发者工具里看到的参数来用
https://pastebin.com/ANgNVxqF
说回为什么 "了解问题" 重要,
弄清楚问题是什么再对症下药,比较不会花大量时间做无用功,
当问题解决时也比较清楚问题究竟是什么,为什么能解决,
才能真的吸收并得到经验
有时候不一定要急着赶工,
稍微停下来,多查一查想想看,反而可能更快更有收获
※ 引述《andy22543 (andy22543)》之铭言:
: 最近接到一个专案要爬购物网站存mySQL
: 爬分类里面各产品资讯+内页详细资讯
: 目前已经使用selenium+multithreading写完
: 可惜速度不够快
: 所以正改用request改写
: 但发现不管用什么方法(session、cookie、payload)都没办法取得首页的商品资讯
: 已经把网络上能看的解决方式都看过一遍还是无解
: 另外也试过network的event(貌似是api?
: 把相关资讯post上去爆出ConnectionError: ('Connection aborted.'
: 所有能试解法都试过还是无法
: 有没有精通的高手帮看一下还有什么办法呢
: 附上连结
: https://www.hktvmall.com/hktv/zh/%E8%B6%85%E7%B4%9A%E5%B7%BF%E5%A0%B4/%E8%B6%85%E7%B4%9A%E5%B8%82%E5%A0%B4/%E5%86%B7%E5%87%8D-%E6%80%A5%E5%87%8D%E9%A3%9F%E5%93%81/main/search?page=0&q=%3Arelevance%3Astreet%3Amain%3Acategory%3AAA11110000000
:
作者: kimi112136   2023-01-28 11:42:00
大眼镜的威席不是熟悉的威席QQ

Links booklink

Contact Us: admin [ a t ] ucptt.com