• 北京汽车官网经销商信息抓取(解析html标签)


    1、网站地址http://www.baicmotor.com/dealer.php

    2、使用firefox查看后发现,此网站的信息未使用json数据,而是简单那的html页面而已

    3、使用pyquery库中的PyQuery进行html的解析

      页面样式:

      

      代码:  

     1  def get_dealer_info(self):
     2         """获取经销商信息"""
     3         css_select = 'html body div.box div.news_wrapper div.main div.news_list div.service_main div table tr '
     4         #使用火狐浏览器中的自动复制css路径得到需要位置数据
     5         page = urllib2.urlopen(self.entry_url).read()
     6         #读取页面
     7         page = page.replace('<br />','&')
     8         page = page.replace('<br/>','&')
     9         #由于页面中的电话信息中使用了br换行,所以在抓取的时候会产生问题
    10         #问题是:如果取得一对标签中的数据,中包含<br/>,会出现值得到br之前的数据,而后的数据将得不到,原因个人认为是解析html是会任务/>结尾标准        
    11         d = pq(page)
    12         #使用PyQuery解析页面,此处pq=PyQuery,因为from pyquery import PyQuery as pq
    13         dealer_list = []
    14         #创建列表用于提交到存储方法
    15         for dealer_div in d(css_select):
    16             #此处定位tr,具体数据在此标签中的td标签内
    17             p = dealer_div.findall('td')
    18             #此处p就是一个tr标签内,全部td数据的集合
    19             dealer = {}
    20             #此处的字典用于存储一个店铺的信息用于提交到列表中
    21             if len(p)==1:
    22                 #此处多哥if判断是用于对数据进行处理,因为一些格式不符合最终数据的要求,需要剔除,这个快的代码按需求而定
    23                 print '@'
    24             elif len(p)==6 :
    25                 strp = p[0].text.strip()
    26                 dealer[Constant.CITY] = p[1].text.strip()
    27                 strc = p[2].text.strip()
    28                 
    29                 dealer[Constant.PROVINCE] = p[0].text.strip()
    30                 dealer[Constant.CITY] = p[1].text.strip()
    31                 dealer[Constant.NAME] = p[2].text.strip()
    32                 dealer[Constant.ADDRESSTYPE] = p[3].text.strip()
    33                 dealer[Constant.ADDRESS] = p[4].text.strip()
    34                 dealer[Constant.TELPHONE] = p[5].text.strip()
    35                 dealer_list.append(dealer)  
    36             elif len(p)==5:
    37                 if p[0].text.strip() != u'省份':
    38                     dealer[Constant.PROVINCE] = strp
    39                     dealer[Constant.CITY] = p[0].text.strip()
    40                     dealer[Constant.NAME] = p[1].text.strip()
    41                     dealer[Constant.ADDRESSTYPE] = p[2].text.strip()
    42                     dealer[Constant.ADDRESS] = p[3].text.strip()
    43                     dealer[Constant.TELPHONE] = p[4].text.strip()
    44                     dealer_list.append(dealer)
    45             elif len(p)==3:
    46                 print '@@'
    47         print '@@@'
    48         self.saver.add(dealer_list)
    49         self.saver.commit()

    4、最终代码执行成功,得到了相应数据并存入excel中

  • 相关阅读:
    Device eth0 does not seem to be present, delaying initialization(解决克隆CentOS6.3虚拟机后网卡设备无法启动问题)
    CI整合Smarty
    修改crontab默认的编辑器
    添加数据之后不跳页面显示一个漂亮的提示信息(非ajax提交数据)
    jsp连接mysql数据库
    PHP使用CURL详解
    内、外部号码范围配置
    更改SAP的字段翻译
    SAP 应用服务负载均衡的实现
    SAP中禁止特定用户更改密码
  • 原文地址:https://www.cnblogs.com/victroy/p/3437242.html
Copyright © 2020-2023  润新知