网络爬虫之手机号测吉凶(纯属娱乐)

#目标URL=” http://jx.ip138.com/

#主要用到的python库:requests , etree

 主要用xpath进行信息处理

先说一下xpath:

 XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力,说直白了就是在HTML代码中将标签中的内容提取出来。

思路:

  1. 先看一下网页

网络爬虫之手机号测吉凶(纯属娱乐)

这就是我们主要要提取出来的信息;

先看一下提取出来的效果:

网络爬虫之手机号测吉凶(纯属娱乐)

  1. 检查网站源代码(F12):

网络爬虫之手机号测吉凶(纯属娱乐)

我们所需要的信息都在一个标签名为‘table’的标签中,在table标签中又有小的标签’tr’,’td’包裹着我们的信息,所以网站标签的路径十分清晰。标签的路径就是我们需要的XPATH,这个可以直接通过浏览器复制粘贴的,所以不有担心路径找出!

  1. 写代码:

先有requests函数的get函数抓取网页的代码,在抓取的时候最好加上请求头,不然有些网站会封IP:

网络爬虫之手机号测吉凶(纯属娱乐)

Str(number)中的number就是我们要查询的手机号

然后就用将我们获得的html代码进行编码和整理:

网络爬虫之手机号测吉凶(纯属娱乐)

基本所有的网站都可以用这几行代码来整理,可谓万能代码。

然后就用xpath来提取信息了:

Xpath在etree库中,而etree 在模块lxml中,所以向C语言一样先加头文件from lxml import etree

然后根据路径就可以提取了:

con1=selet.xpath('/html/body/table[2]/tr[1]/td/b/text())

con2=selet.xpath('/html/body/table[2]/tr[1]/td/text())

因为标签table中有8个这样的小标签,所以我们要循环8次,只是每次循环的的时候将tr[ ]中的数字换了,然后将其print出来就可以了:

网络爬虫之手机号测吉凶(纯属娱乐)

最后给出全部代码:

import requests
from lxml import etree
def find(slet,num):
     con1=selet.xpath('/html/body/table[2]/tr['+str(num)+']/td/b/text()')
     con2=selet.xpath('/html/body/table[2]/tr['+str(num)+']/td/text()')
     for i in con1:
          print(i)
     for i in con2:
         print(i)
while(1):
     print("手机号测吉凶纯属娱乐!!!\n输入q退出!\n")
     number=input("请输入你的手机号:")
     if(number=='q'):
          break;
     kv={'user-agent':'Chrome/55.0.2883.87 Mobile Safari/537.36'}
     url="http://jx.ip138.com/"+str(number)
     r=requests.get(url,headers=kv)
     r.encoding=r.apparent_encoding
     html=r.text
     selet=etree.HTML(html)
     for num in range(1,9):
          find(selet,num)
     print("*************************************")