不通过后端的服务器,相当于用户每次访问网页,在前端爬取数据后,再上传到后端,每次使用用户的 ip 。 当然需要告之用户,类似做一个更新最新数据的按钮,用户自己点击,然后再爬取数据。
1
xiaoxinshiwo 2020-04-15 11:46:59 +08:00 1
你说的啥???
|
2
sun019 2020-04-15 11:50:57 +08:00
百度爬虫里面有个 自动提交的 js 功能,你可以参考下他怎么做的。
他的流程就是用户访问了该网页,然后就把网址提交了。后续爬虫定时再来爬。 |
3
lzdyes 2020-04-15 11:51:09 +08:00
浏览器跨域你的想法就被 kill 了
|
4
lshero 2020-04-15 11:51:27 +08:00
油猴写个脚本就搞定了啊
|
5
dcalsky 2020-04-15 11:51:41 +08:00 2
浏览器有跨域的限制,不会让你从这个页面发送 http 请求给其他页面的,除非人家开了针对你的 CORS (或者*),或者你 get 到了他的 jsonp 接口(但是没人会给 html 页面开 jsonp 吧)。所以理论上不行,除非你说的前端不是 web,而是其他客户端。
|
6
easylee1996 OP @xiaoxinshiwo 用前端 js 能不能爬取数据,不使用 python,java 这些
|
7
coderluan 2020-04-15 11:53:04 +08:00
最简单的办法是油猴脚本,比较折中的办法是浏览器插件,这些都能保证爬取的过程都是用户行为,单纯的网页肯定还得你提供服务,严格来说就不能算纯前端了。
|
8
hcwhan 2020-04-15 12:14:32 +08:00 via Android
@easylee1996 不能 具体原因请搜索 同源策略 跨域
|
9
tyx1703 2020-04-15 12:35:30 +08:00 via iPhone
用油🐵或者浏览器扩展吧
|
10
also24 2020-04-15 12:37:41 +08:00
需要先定义一下 『纯前端』指的是什么。
是说你自己搭建一个前端页面,然后去爬其它网站? 还是说你在其它人的页面上执行一段前端脚本(类似油猴、浏览器扩展),来实现对其它网站的抓取? |
11
binbinyouliiii 2020-04-15 12:37:46 +08:00 via Android
浏览器:”不,你不想”
|
12
ic2y 2020-04-15 12:40:35 +08:00
使用浏览器扩展,是可以的。
一些比价插件,就会通过插件扩展机制,去扫描当前页面的 document,根据不同的网站 url,执行不同的采集策略。 采集到的数据,会通过 http 传送到后端,既能让用户帮助自己辅助数据抓取,也能满足用户更精准的比价需求 [爬当前页的商品基本文案,可以比价推荐类似的产品] 。 |
13
ljpCN 2020-04-15 12:42:00 +08:00 via Android
@easylee1996 puppeteer
|
14
C603H6r18Q1mSP9N 2020-04-15 12:58:37 +08:00
不行
|
15
azh7138m 2020-04-15 13:08:36 +08:00 via Android
就是省一个 ip 池的钱嘛
纯 Web 做不了,原因看 #5 dcalsky |
16
xiaoxinshiwo 2020-04-15 13:44:55 +08:00
|
17
DOLLOR 2020-04-15 13:49:07 +08:00
用油猴子+Chrome/Firefox 可以,我自己都试过。
借助油猴子绕过跨域检测。 |
18
easylee1996 OP @azh7138m 对,除了省钱,主要是采集的东西及时性比较强,页面比较多,如果可以实现的话,用户看得都是最新的
|
19
endoffight 2020-04-15 14:13:34 +08:00 via Android
好实现,找一个只会前端小伙伴帮你写爬虫就行了
|
20
tabris17 2020-04-15 14:16:40 +08:00
1 、浏览器扩展
2 、Electron 自制浏览器 |
21
ajaxfunction 2020-04-15 17:36:31 +08:00
先搞清楚这个爬虫是你自己用 还是给用户用
要是你自己用咋也好说,浏览器插件 扩展 脚本都行 如果是给用户用,那么浏览器就限制死了,无法发起跨域操作,你总不能让用户去安装 扩展 脚本这些吧? |
22
netnr 2020-04-15 17:49:24 +08:00 1
|
23
netnr 2020-04-15 17:52:43 +08:00 1
|
24
Tink 2020-04-15 22:05:01 +08:00 via iPhone
你跨域了
|
25
iX8NEGGn 2020-04-15 22:26:36 +08:00 via iPhone
@netnr 可是,加代理了走的不就是代理的 ip 了吗,楼主想用户的 ip 。同源策略,跨域,看来楼主想多了
|
26
angryfish 2020-04-15 23:25:52 +08:00 via iPhone
浏览器是不行的。安卓,ios 这些 app 是可以做到的
|