前两三天赶了一下web搜索的小作业,算是入门了爬虫,简要记录一些知识以便日后迅速回忆。接下来也会慢慢补充。
·Chrome浏览器可直接通过about:version来看一些信息如user-agent,这是种特殊协议,叫about协议。不同浏览器具体支持的程度不太一样,比如火狐就没有about:version,那就用开发者工具看请求头。
·Ajax 全称为 Asynchronous JavaScript and XML, 即利用JavaScript在页面不刷新的情况下与服务器进行数据交互,获得数据后再利用JavaScript改变网页。也就是像新浪微博那种,一开始没加载完,往下拖会加载新的。
其主要有3个步骤:
1.发送请求。
2.得到并解析内容。得到的响应可能是HTML、JSON等,还需进一步处理。
3.渲染网页。拿到解析之后的内容,就通过js对网页元素进行修改,这样我们就看到了新加载之后的页面了。
如果想要抓取由Ajax请求得到的数据,我们需要知道其怎么发送的(发去哪,参数是啥),然后我们就可以模拟请求。
此处推荐用移动版微博来进行练习,其网页比较清晰,容易分析。按F12通过Network块可查看每次打开或加载网页时的所有请求的具体信息。Ajax 有其特殊的请求类型,它叫作 xhr。 点击请求可在右方查看请求的详细信息,其中 Request Headers 中有一个信息为 X-Requested-With:XMLHttpRequest,这就标记了此请求是 Ajax 请求。
有时候因为一些原因如有些Ajax接口加密参数不好分析,我们通过直接模拟浏览器的运行来爬取。有许多能模拟浏览器运行的库,如Selenium。
整个过程中可能就是理清楚自己所需数据的位置需要点耐心。这几天爬的几个网站都是没用Ajax的,主要就是在html中定位到自己想找的元素。解析网页的库只尝试了pyquery,其定位方式类似于CSS选择器。