求教一个最简单的爬取 doc、rar、pdf 等文件的办法。

2018-08-27 08:38:09 +08:00
 sjmcefc2

输入一个网址,然后根据这个网址定期不重复的把链接下面多有关联的 url 上的 rar、doc 等等文件都保存到本地? 有没有最简单的 python 或 go 处理办法?

4152 次点击
所在节点    程序员
15 条回复
nilrust
2018-08-27 08:44:36 +08:00
要看你那个网站怎么提供下载,

如果是直接提供下载链接地址(静态 http 地址、ftp 地址、ed2k/bt/迅雷 等地址)那好办;

但如果他的下载链接要鉴权用户登录,下载还要输入验证码,下载内容是通过代码业务逻辑处理后才转发文件,这个爬虫写起来就会麻烦点
delectate
2018-08-27 09:11:19 +08:00
简单的办法,就是用搜索引擎,google,加上 filetype:doc 这样的参数。
sjmcefc2
2018-08-27 09:43:29 +08:00
@delectate 小局域网。没法 google 哈

@nilrust 不爬取需要鉴权的。
csx163
2018-08-27 10:07:15 +08:00
你这个需求可以考虑第三方工具
lanwairen123
2018-08-27 13:01:39 +08:00
wget -r -p -np -k http://yoururl.com
crontab
应该可以解决问题吧
PulpFunction
2018-08-27 14:04:08 +08:00
动手就能解决 beautifulsoup+requests
太多了
贴个网站源码看一下?
sjmcefc2
2018-08-27 14:49:52 +08:00
@PulpFunction 收到,可能也只能是 bs4+requests
sjmcefc2
2018-08-27 14:54:20 +08:00
@lanwairen123
wget -c -r -np -k -L -l 3 -p www.xxx.org/pub/path/


-c 断点续传
-r 递归下载,下载指定网页某一目录下(包括子目录)的所有文件
-np 递归下载时不搜索上层目录,如 wget -c -r www.xxx.org/pub/path/,没有加参数-np,就会同时下载 path 的上一级目录 pub 下的其它文件
-k 将绝对链接转为相对链接,下载整个站点后脱机浏览网页,最好加上这个参数
-L 递归时不进入其它主机,如 wget -c -r www.xxx.org/ 如果网站内有一个这样的链接:www.yyy.org ,不加参数-L,就会像大火烧山一样,会递归下载 www.yyy.org 网站;但是现在很多的 css、js、img 都不在项目的目录下保存,而是在 html 页面中 src 一个 http 引用,所以如果想要一并 download 当前页面引用的 http 资源,比如 js,css,img,那么这个参数就需要省略
-l 下载层级,默认最大为 5 级,一般情况下 3 级就够了
-p 下载网页所需的所有文件,如图片等


哎呀,这样的话,是不是搜索引擎(爬虫部分)就失业了?


想着做一个局域网内的搜索引擎,不知道哪里有可以参考的代码。
PulpFunction
2018-08-27 14:56:02 +08:00
@sjmcefc2 还有 re
主要是 re
估计网站结构简单
1,request 获取源码
2,艾 不用 bs4 艾 直接正则匹配
3,保存文件
PulpFunction
2018-08-27 14:57:13 +08:00
全当我没说
sjmcefc2
2018-08-27 16:18:17 +08:00
@PulpFunction 非常感谢指点。确实网站特简单,一般就是,title,然后就是 doc 之类的下载链接了。就是怕爬重复了,想着每天怕新内容。
loveCoding
2018-08-27 16:19:21 +08:00
具体问题具体分析 , 写代码也不过半天功夫吧
XxxxD
2018-08-27 16:22:16 +08:00
urllib3 的 urlretrieve,不过比 request 慢得多,感觉就是 requests.get().content
winglight2016
2018-08-27 20:58:29 +08:00
既然是局域网,直接通过网络共享文件夹复制黏贴多简单
sjmcefc2
2018-08-28 01:29:45 +08:00
@loveCoding 主要都是自学,也没啥可以交流的人,所以其实写的思路上非常局限。得向大家讨教。

@winglight2016 这个,,,,还真是不行。

@XxxxD 嗯,觉得 requests 挺好用了,

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

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

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

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

© 2021 V2EX