1. 正则表达式匹配带有换行符\n的内容:
eg.
"like_uin_info":[{"fuin":5414545,
"nick":"你好",
"portrait":"http://qlogo2.store.qq.com/qzone/541434545/541434545/30",
"gender":"女",
"constellation":""]

要匹配[]中的内容,因为带有\n,可以使用 [[\s\S]?] 不能使用[.],因为. 不能匹配\n
\n 匹配一个换行符。等价于 \x0a 和 \cJ
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

2.爬取哈工大就业信息网,出现 Remote end closed connection without response

  • 该爬虫是这两天才出现的这种错误,之前没有过
  • 通常远程服务器关闭连接的原因是通过检查UA或cookie来判断出了爬虫,但是我反复更新了cookie和UA,都没有作用
  • 在浏览器上检查,通过firefox发包得到的正确数据和爬虫的头部字段做对比,发现几乎一样
  • 但是唯一不一样的是,我头部的很多字段都是小写开头的,比如host, user-agent,因为印象中http协议中明确提出了区分大小写的只有method,所以忽略了这一点。但最终证明,确实是因为host字段错误,应该为 ‘Host’
  • 问题到这里就解决了,但是我想再探究一下为什么会这样。因为通常来说是不应该区分的,因为除了哈工大这个网站之外,另外几十个爬虫都没有出现这种问题,并且不可能是那些网站没有检查头部,因为印象中不少大学的网站都会检查 ‘Referer’这个字段,但是我一直写的是’referer’
  • 我又尝试了一下用浏览器发包,将’Host’改为’host’,结果能正确获取数据,但是请求头被改为’Host’,这很可能是浏览器改的。单步跟踪了一下requests, 发现requests并没有做这个工作。
  • 我试图确认Http协议中关于首部字段的描述,到底有没有说区分大小写。
  • RFC 2616 标准文档page 128 中并没有明确指出是否应该大小写,但是给出的例子中都是大写。然后把《HTTP权威指南》、《计算机网络–自顶向下》都翻了一下,也没有相应的描述。既然没有明确说明,那可能与具体的服务器程序实现有关。

3.四川大学就业信息网,爬虫突然出现 response 202…

点击量:29634


1 条评论

关于同源策略的一点思考 – 小麦冬 · 2020年8月16日 上午2:20

[…] 所以,对于同样的协议,不同的组织,在不同的时间,完全可能开发出不同的产品,并且由于计网协议往往定义得比较宽松,对于未涉及到的细节,只要不违背协议,都是可以的。比如Http协议规定了http头部有哪些字段,但是并没有规定这些字段的名称是不是都要小写或都要大写或首字母大写…(这个坑我真踩过,见这篇博客爬虫踩坑笔记) […]

发表评论

电子邮件地址不会被公开。 必填项已用*标注