wjjsmile / ket

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ket

爬取分析详情请转到本人知乎专栏,不定时更新https://zhuanlan.zhihu.com/p/27346009

  1. 翻页url不变 一个比较小的爬虫。不过有借鉴意义的是,它是ajax动态加载的,而且我在产品翻页时url居然不变。 那让我们回忆一下,get和post这两者的区别。 在浏览器中,post的安全性更高,get呢一般是搜索的时候使用,并且我们可以再浏览器的url中看到!!! 那只能说明,在这个网站中,我翻页的是post请求。既然是请求是请求的谁? F12 或者 Fn+F12.打开开发者工具,去Network里面找吧。看 header中的from data。这代表了翻页时提交的数据。 然后我们解决第一个问题了。我们构造出header中的data,自己去模仿浏览器post不就好啦。

  2. 查看源代码没有我们需要的信息 第二个问题是什么,Ajax动态加载。查看源代码的时候没有需要的信息啊。那说明我们看到的是浏览器解析后的数据,浏览器知道怎么解析,我们不知道啊。还是一样的方法。 F12 或者 Fn+F12.打开开发者工具,去Network里面找吧。找啥呢, 找Ajax写的文件咯。推荐一个Ajax解析的工具,beajax。看看ajax中有没有我们需要的信息。 有的话,就很简单了。因为ajax跟python的字典很像啊,都是k-v的形式。然后就自己一层层的剥出来你需要的信息。有列表,有字典,重重嵌套啊。耐心点,肯定能找到的。

  3. 在这个需求中,型号和产品的详情的不对应。这说明什么,产品我们拿得列表的ajax,这个是拿到的,准确无误的。我们用它构造的产品详情页的url, 但是,但是。详情页有的居然打不开!所以造成了一个错位。本来1,2,3,4,5,6,7,8 对应着,然后2,3,4,5,6,没了,那岂不是2,对应到7了。爬虫这么费力,怎么能让拿到 的数据不准确呢。所以也不难啊,只需要做个判断,只有当请求的页面有我需要的数据的时候,我才把这个详情页url添加进队列,才去解析。不然忽略掉。

最后,深刻理解语言的数据结构,真的可以省事很多,而且更准确。还有一些小问题,不便细说,最后,自己提醒自己。一定要学会队列,列表,集合,字典, 元祖的深度使用哈。 下次再见~~~~

About


Languages

Language:Python 100.0%