决定了!实战爬取全网5000部手机|上篇

本篇作者:BlueDamage同学

信任大家还出打手机的需求,那么全网上手机究竟出略只品牌吧,哪一样种植的手机价格最好经济,评分最高,屏幕最充分,硬件最牛等等这些信息我们都惦记清楚,不如自己动手爬下总体全网的无绳电话机,慢慢研究,至少买手机的时候可以参照参考嘛.即时首文章综合了爬虫,代理,数据库多只知,非常不错.

环境: Python 3.5
据此到之堆栈: os, re, random, time, sqlite3, requests, BeautifulSoup,
pickle
之所以到的家伙:Pycharm

1.网站分析

这里我们爬取的是中关村在线网站,我们首先要对目标网站开展周密的辨析,才会确定为此什么技巧去处理:

  • 靶网站的url地址是否规整
  • 对象网站有管反爬虫策略
  • 靶网站的数码是匪是利于之领,格式来无前后不同等,如何配合
  • 对象网站是静态网页还是动态加载的,要无使就此selenium模拟器去爬取
  • 此时此刻网站的爬取规模数据有多万分,要无苟就此框架爬取等等
    脚我们先来分析一下对象网站吧
网页一: 简略手机信息页面
  • 打开zol手机页面:
    http://detail.zol.com.cn/cell\_phone\_index/
    subcate57_0_list_1_0_1_2_0_1.html

  • 下一场我们点击下一样页,发现第二页变成了:http://detail.zol.com.cn/cell\_phone\_index/subcate57\_0\_list\_1\_0\_1\_2\_0\_2.html,第三页是3

  • url的地方规律很鲜明,
    大家可持续点击下同样页看一下,一直点下去,发现一起来108页
  • 每个手机的id是在index后面的数字串,比如下图的左下角的根

1141273是是红框里面手机的id

网页二: 手机综述介绍页面

随机选择一样放缓手机的连年, 进入其归纳介绍的页面

在这个页面, 想如果落手机的名称与品牌,
同时为抱差一点栽价位(参考报价和店报价),此外尚眷恋得到图片,
参数和点评页面的url

是因为臻三贪图可见, 图片, 参数与点评页面的url的组织,
都需要获得在1167243(手机id)前1168之数字串(前置id)

网页三: 手机参数页面

是因为图可见, 拖欠手机闹九很性(基本参数, 屏幕,网络…),
大属性对诺在几码小属性, 小属性对承诺着现实的情
,希望以爬取此页面时,
构造一个特性的杀字典
attrs={‘基本属于性’:{‘上市时’:”,’手机类型’:”},}

网页四: 手机点评页面

在点评页面, 要博点评人数, 平均评分和详细评分, 好评块与差评块

2.程序框架

代码我们得以为此Py2,也足以为此Py3.因为用到之库py2和py3都生,我们先行看一下整的框架图:

  • 由于目标网站是华语网站,考虑网站里有大量底汉语字符串,为了减少麻烦,我们或用Py3
  • 数据库及时边我们就此SQL数据库,用简易的sqlite3失操作一下
  • 反爬其实是一个比较头疼的问题,本篇代理是一个不易的取舍
  • 总体的代码需要规划4独像样,爬虫类,代理类,数据库类,考虑到集手机的消息特别多又包一个手机类,这样封装和隔离度比较好.如果要数解析的言辞,可以再次规划一个类似,下面我们实际看一下吧
1.手机类

以一旦采访的手机的音太多矣,从手机的价位,品牌,参数,屏幕,网络,硬件,摄像头,服务支持,评价等等,有十几栽信息要采访,所以封装成类是较好的不二法门

self.attribute是一个十分字典,字典套字典的数据结构

2.数额库类

数据库是拿4900差不多单纯手机的有信息一五一十抱起来,为了便利查询及拍卖,我们规划了12个单身的表格,但是每个表格都为此手机id作为key,所以并查询也深方便.

关押一下代码,其实代码和我们前面介绍的sqlite3教程有点类似

以数据库入门,特别是SQL语法我们提了许多,这里不再一一样又,有趣味的同班可以错过押一下史篇章中(数据库入门篇系列文章),下面是手机基本信息表和评分表两独表

咱们于网页上爬取数据,然后存入数据库,所有的多少都是起mobilePhoneList里面获取,里面存放了各个一个手机类的音讯

关押一下12单表中的phone table长啥样:

一共4921手机,忽然发现还起好多有名的无绳电话机还是以网站及发销售

结论:

需要源码的同桌,请留言

网站地图xml地图