selenium,webdriver,xpath获取全国各地的邮编

代码要多敲 注释要清晰

其中区号没有拿取出来

看到的朋友可以作为练习

,有好的方法可以在下面留言

from selenium import webdriver
from lxml import etree
import time
#接口分析
# base_url = 'http://www.ip138.com/post/'
# base_url = 'http://www.ip138.com/51/'
#生成浏览器
driver = webdriver.PhantomJS()

#拿取邮编信息函数
def youbian(num):
    #各地的接口url地址
    base_url = 'http://www.ip138.com/%s/'%(num)
    #访问
    driver.get(base_url)
    #把页面生成树结构
    tree = etree.HTML(driver.page_source)
    #用xpath拿取想要的数据
    trs = tree.xpath('//table[@class="t12"]/tbody/tr[@bgcolor="#ffffff"]')
    for tr in trs:
        #地区和邮编的拿取
        diqu = tr.xpath('.//b')
        if diqu != []:
            diqu = diqu[0].text
            number = tr.xpath('.//td/a')
            number = number[1].text

        else:
            diqu = tr.xpath('.//td')[0].text
            number = tr.xpath('.//td/a')
            number = number[0].text

        #打印出想要的结果
        print(diqu,'邮编:' + number)

#主进程
if __name__ == '__main__':
    #各地的接口号
    num = [
        10,30,50,3,1,11,13,15,20,21,31,23,35,33,25,
        45,43,41,51,53,57,40,61,55,65,85,71,73,81,75,83
    ]
    #遍历接口号 一个一个的传输
    for n in num:
        youbian(n)

'''
树结构分析
tr:市区
<tr bgcolor="#ffffff">
    <td>
        <a href="guangzhou/">
            <b>广州市</b>
        </a>
    </td>
    
    <td>
        <a href="/510000/">510000</a>
    </td>
    
    <td>
        <a href="/020/">020</a>
    </td>
    
    <td colspan="3">&nbsp;</td>
</tr>

#地区
<tr bgcolor="#ffffff">
    <td>通县</td>
    <td>
        <a href="/101100/">101100</a>
    </td>
    
    <td>
        <a href="/010/">010</a>
    </td>
</tr>
'''

 

posted @ 2018-03-14 20:41  Bob__Zhang  阅读(137)  评论(0编辑  收藏  举报