- acgnx除了首页,访问其他页面时,会先得到一段Js代码,里面有 cookies 里的 SafeTechSYS_sign_javascript 字段值,这个字段有一定的失效时间,而且和其他两个 cookies 字段匹配,然后Js会重定向到原url并验证 cookies。
- 无法执行Js代码的爬虫,用 re 模块取出Js字段中 SafeTechSYS_sign_javascript 的值并写入 cookies,就能正常访问其他页面,当 cookies 失效时(判断方法是响应内容的长度),便再构造一次cookies
- 因为涉及到 url 队列,所以使用多线程或多进程或携程时,读同一个 url 队列,可以使用 Queue 模块,也可以用 redis,同一个redis节点对并发的请求是序列化的,而且因为不会涉及到 read&write 操作,所以不需要加锁。
- 先将爬下来的字段写入redis set, 然后再写入文件。否则原因同上,多线程或多进程对同一文件进行操作需要用到文件锁
- crawl_info.py 爬取某页的类,写入redis,以 category 命名的 set
- main.py 实现并发,mult_gevent('目录',页码数,‘是否写入文件’)
- get_category.py 返回 目录:url 的一个字典
- 指定爬取 音乐 类,指定爬取 1000 页,耗时 1271s,应该得到数据 40000 条,实际得到 39800