如何批量查询手机号的归属地
就选择这个网站吧
抓包结果:
上代码:
from lxml import etree
from fake_useragent import UserAgent
import requests
def get_归属(phone_no='13903570832'):
cookies = {
# '__gads': 'ID=893e35277366e935-22b45f769ed80099:T=1668993903:RT=1668993903:S=ALNI_MY8Luolx8xmnVdQ70buZA1GQc96CQ',
# '__gpi': 'UID=00000b8004ecf335:T=1668993903:RT=1668993903:S=ALNI_MZpHLlOOmmRfqmcOUkZ70pBeOUAhQ',
# 'PHPSESSID': '96nob7v30nn90ms1akm00m1382',
# 'Hm_lvt_3e47d1cbb8dbee6ce04f9d7c9d7df953': '1668993897,1668994974',
# 'Hm_lpvt_3e47d1cbb8dbee6ce04f9d7c9d7df953': '1668994978',
}
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': UserAgent().random, #随机浏览器
'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
}
response = requests.get(f'https://www.haoshudi.com/{phone_no}.htm', cookies=cookies, headers=headers)
html_str=response.text
html=etree.HTML(html_str)
rows=html.xpath('//table//tr')
if rows:
a = html.xpath('//table//tr[2]/td[2]/span//text()')
归属地=''.join(a)
运营商=html.xpath('//table//tr[3]/td[2]/span/a/text()')[0].strip("'")
else:
归属地='未找到---'
运营商='未找到---'
return (归属地,运营商)
if __name__ == '__main__':
phone_nos=['13903570001','13305670002','13023450003']
for phone_no in phone_nos:
result =get_归属(phone_no)
print(phone_no,result)
运行结果:
号码太多时,可能会返回不到结果,这里尝试了一个小措施,更换随机浏览器。
还有哪些更好的措施呢?