网页手机号抓取程序(HTML代码中将标签中的内容提取出来的思路和方法 )
优采云 发布时间: 2022-01-27 09:26网页手机号抓取程序(HTML代码中将标签中的内容提取出来的思路和方法
)
#target URL=""
#主要用到的python库:requests、etree
主要使用xpath进行信息处理
我们先说xpath:
XPath 是 XML 路径语言,它是一种用于确定 XML(标准通用标记语言的子集)文档的某个部分的位置的语言。 XPath 基于 XML 的树结构,它提供了在数据结构树中查找节点的能力。说白了就是提取HTML代码中标签的内容。
思考:
先看页面
这是我们主要要提取的信息;
我们先来看看提取出来的效果:
查看网站源代码(F12):
我们需要的信息在一个名为'table'的标签里,而在table标签里有一个小标签'tr','td'包裹了我们的信息,所以网站标签的路径很清晰标签的路径就是我们需要的XPATH,可以直接通过浏览器复制粘贴,不用担心找不到路径!
编写代码:
首先requests函数的get函数抓取网页的代码。爬取的时候最好加上请求头,不然有些网站会阻塞IP:
str(number)中的数字就是我们要查询的电话号码
然后使用我们得到的html代码进行编码整理:
基本上所有的网站都可以用这几行代码组织起来,是通用代码。
然后使用xpath提取信息:
xpath在etree库中,而etree在模块lxml中,所以先添加头文件 from lxml import etree like C语言
那么就可以根据路径提取出来了:
con1=selet.xpath('/html/body/table[2]/tr[1]/td/b/text())
con2=selet.xpath('/html/body/table[2]/tr[1]/td/text())
因为标签表里有8个这么小的标签,所以我们要循环8次,每次循环都改变str[]里面的数字,然后打印出来:
p>
最后给出所有代码:
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("*************************************")