python写爬虫 对不同的url该如何判定

chudaxiakkk 2016-02-06 11:25:52
爬虫大致框架代码已经完成。
现在需要优化url采集规则

发现当前url的形式有好几种:
以南邮为例子,官网http://www.njupt.edu.cn/

1.绝对路径 http://www.njupt.edu.cn/s/1/t/1/p/1/c/3/list.htm
2.相对于域名的路径 /s/1/t/1/p/1/c/3/list.htm
3.相对路径 ,比如http://www.njupt.edu.cn/下的<a href=“en”>,跳转到英文版面
4.没有协议类型的url //www.njupt.edu.cn/s/1/t/1/p/1/c/3/list.htm(有人知道为什么浏览器能知道协议吗?)

鉴于此,我想请问万能的猿猿们,以下几个问题:
1.网站中编写url总共有多少种形式。(我上面提到的4种之外)有什么文档可以看的吗?
2.有工具可以比较好的处理各种url吗?我希望都能转成绝对路径形式。没有的话说一说转换的经验
3.有些href接的是javascript写的语句,有什么办法获取真的跳转url,还有如何判定把不需要的js链接给干掉

...全文
627 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 chudaxiakkk 的回复:
谢谢楼上大神了。除了js待探讨之外,其他问题都解决了 刚才去一个小网站爬点美女图片,貌似是遇到反爬虫了。 返回页面是一个空字符串 想不到乱走乱撞就遇到反爬虫网站了。
反爬虫主要还你看headers里面的数据,带上请求头去爬
chudaxiakkk 2016-02-07
  • 打赏
  • 举报
回复
谢谢楼上大神了。除了js待探讨之外,其他问题都解决了 刚才去一个小网站爬点美女图片,貌似是遇到反爬虫了。 返回页面是一个空字符串 想不到乱走乱撞就遇到反爬虫网站了。
panghuhu250 2016-02-06
  • 打赏
  • 举报
回复
Q1. 就这几种了,可以看"RFC 1808 Relative Uniform Resource Locators ."
引用
URL = ( absoluteURL | relativeURL ) [ "#" fragment ] absoluteURL = generic-RL | ( scheme ":" *( uchar | reserved ) ) generic-RL = scheme ":" relativeURL relativeURL = net_path | abs_path | rel_path net_path = "//" net_loc [ abs_path ] abs_path = "/" rel_path rel_path = [ path ] [ ";" params ] [ "?" query ]
Q2. 1型不用说, 2,3,4型可以用urljoin.
In [140]: from urlparse import urljoin

In [141]: urljoin?
Signature: urljoin(base, url, allow_fragments=True)
Docstring:
Join a base URL and a possibly relative URL to form an absolute
interpretation of the latter.
File:      /usr/lib/python2.7/urlparse.py
Type:      function
函数中的base你要自己定, 是base tag的url或文档自己的url. Q3. js不好处理. 除非真正运行它, 否则很难判断一个函数到底干了什么. 可以用headless browser去运行. 判断没用的js也一样难. 但同一个网站所用的js框架应该是统一的, 你可以自己准备一个"没用的文件"列表.
chudaxiakkk 2016-02-06
  • 打赏
  • 举报
回复
不沉不沉不沉

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧