Python 使用xpath爬蟲查詢身份證資訊和手機號資訊並寫入Excel表格

weixin_34232744發表於2018-11-02

一.這個程式在網上還是有很多範例的,所以我就將大家的總結一下,然後形成自己的小程式,廢話少說,上程式碼

import time
import requests
from lxml import etree  # xpath模組
import pandas as pd     # 寫入Excel模組 

# 獲取身份資訊
def main():
    time1 = time.time()
    # 將要獲取的身份證號
    df = pd.read_csv('C:/Users/admin/Desktop/shen.txt', sep='\t', header=None, dtype=str, na_filter=False)  # 開啟存放身份證號的txt檔案
    print(df)
    idcard1=[]  # 身份證列表
    gender1 = []    # 性別列表
    birthday1 = []  # 生日列表
    address1 = []   # 地址列表

    # 迴圈獲取身份證資訊
    for i in range(0,len(df)):
        try:
            if len(df.iloc[i,0]) == 18:
                print(df.iloc[i,0]) # 獲取每行的身份證號
                idcard1.append(df.iloc[i,0]) # 記錄身份證號
                url="http://qq.ip138.com/idsearch/index.asp?action=idcard&userid="+df.iloc[i,0]+"&B1=%B2%E9+%D1%AF" # 發起請求
                html=requests.get(url).content  # 接受返回值
                selector=etree.HTML(html)   # 處理返回值
                sex=selector.xpath('//td[@class="tdc2"][1]/text()') # 匹配指定元素
                print(sex[0])   # 性別
                print(sex[1])   # 生日
                print(sex[-1])    # 地址
                gender1.append(sex[0])
                birthday1.append(sex[1])
                address1.append(sex[-1])
            else:
                idcard1.append(df.iloc[i, 0])
                gender1.append("空")
                birthday1.append("空")
                address1.append("空")
        except Exception as e:
            print(e)

    # 計算爬蟲時間
    time2 = time.time()
    print('爬蟲結束!總共耗時:' + str(time2 - time1) + 's')

    # 寫入表格
    time3 = time.time()
    data = pd.DataFrame({'id': idcard1,'grender': gender1,'birthday': birthday1,'address': address1})
    pd.DataFrame.to_excel(data, "D:\\1.xls", header=True, encoding='gbk', index=False)
    time4 = time.time()
    print("寫入表格完成!總共耗時:" + str(time4 - time3) + "s")


# 獲取手機號資訊
def main2():
    time1 = time.time()
    # 將要獲取的身份證號
    df = pd.read_csv('C:/Users/admin/Desktop/shouji.txt', sep='\t', header=None, dtype=str, na_filter=False)  # 開啟存放身份證號的txt檔案
    print(df)
    phone1=[]  # 手機號列表
    address1 = []   # 地址列表

    # 迴圈獲取身份證資訊
    for i in range(0,len(df)):
        try:
            if len(df.iloc[i,0]) == 15:
                print(df.iloc[i,0][-11:]) # 獲取每行的身份證號
                phone1.append(df.iloc[i,0]) # 記錄身份證號
                url = "http://www.ip138.com:8080/search.asp?mobile="+df.iloc[i,0][-11:]+"&action=mobile"  # 發起請求
                html=requests.get(url).content  # 接受返回值
                selector=etree.HTML(html)   # 處理返回值
                sex=selector.xpath('//tr[@class="tdc"][2]/td[@class="tdc2"]/text()') # 匹配指定元素
                for i in sex:
                    print(i)
                    address1.append(i)
            else:
                phone1.append(df.iloc[i, 0])
                address1.append("空")
        except Exception as e:
            print(e)

    # 計算爬蟲時間
    time2 = time.time()
    print('爬蟲結束!總共耗時:' + str(time2 - time1) + 's')

    # 寫入表格
    time3 = time.time()
    data = pd.DataFrame({'id': phone1,'address': address1})
    pd.DataFrame.to_excel(data, "D:\\1.xls", header=True, encoding='gbk', index=False)
    time4 = time.time()
    print("寫入表格完成!總共耗時:" + str(time4 - time3) + "s")


# 主函式入口
if __name__ == '__main__':
    main()

總結:
1.在這次過程中,遇到的問題就是如何使用xpath匹配元素,由於太長時間沒有使用xpath了,所以有點不太會用了,百度一下,需要下載一個外掛
2.在執行程式中,需要安裝需要的模組,Xpath和Excel模組
二.xpath安裝步驟
1.下載xpath外掛
xpath連結:https://pan.baidu.com/s/1dFgzBSd 密碼:zwvb,感謝這位網友,我從這拿到了。
2.在谷歌瀏覽器中“更多工具”找到這個“擴充套件程式”選項選單,進入其中
3.進入到擴充套件外掛的介面,把下載好的離線xpath外掛
拖到這個擴充套件介面,他就會有提示,鬆開滑鼠直接安裝即可。安裝成功之後重啟一下谷歌瀏覽器即可
4.使用快捷鍵ctrl+shift+x調出xpath。

相關文章