您好我正在开发一个程序,该程序将向反向电话号码网站提交电话号码,然后按照正确的X路径确定手机是否无线。
元素的xpath是
//*[@id="content"]/fieldset/div/table/tbody/tr[3]/td[2]/strong
到目前为止,我的代码是
def Phone_Checker(number):
url = 'http://www.reversephonelookup.com/'
data={'Enter Number': number}
r = requests.post(url, data=data)
tree=html.fromstring(r.content)
Service_type=tree.xpath('//fieldset[@id="content"]/text()')
print(Service_type)
if "wireless" in Service_type:
print(True)
return True
else:
print(False)
return False
我只是想知道我输入的xpath是错误的,如果我的代码应该正确提交电话号码我也是一个平庸的程序员,并想知道如何能够按照我的意愿制作这个代码功能。
答案 0 :(得分:0)
你的方法缺少相当多的必要数据和步骤,当我第一眼看到我看到页面使用了大量的javascript但监控请求我看到你实际上可以使用请求获取它,首先我们需要发布到:
if (waitKey(30) >= 0) { break; }
,包含正确的帖子数据:
完成后我们需要向 http://www.reversephonelookup.com/results.php
发出请求:
所以把它们放在一起:
http://www.reversephonelookup.com/number/the_number
如果无线是列表中的字符串, def Phone_Checker(number):
head = {
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
url = 'http://www.reversephonelookup.com/results.php'
data = {"phone": number, "image.x": "26", "image.y": "37"}
with requests.Session() as s:
s.post(url, data=data, headers=head)
r = s.get("http://www.reversephonelookup.com/number/{}/".format(number),headers=head)
tree = html.fromstring(r.content)
Service_type = tree.xpath('//*[@id="content"]//fieldset//text()')
return "wireless" in Service_type
Phone_Checker("2068675309")
将仅返回True。我还调整了你的xpath以获取所有文本。
使用该函数的一种更有用的方法是返回lxml树:
return Service_type and "wireless" in Service_type
然后:
def Phone_Checker(number):
head = {
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
url = 'http://www.reversephonelookup.com/results.php'
data = {"phone": number, "image.x": "26", "image.y": "37"}
with requests.Session() as s:
s.post(url, data=data, headers=head)
r = s.get("http://www.reversephonelookup.com/number/{}/".format(number),headers=head)
return html.fromstring(r.content)
一个例子:
xml = Phone_Checker(....)
第一个结果是连接类型,如果您只是想要,可以使用:
In [5]: xml = Phone_Checker("8598795756")
In [6]: print(xml.xpath("//fieldset//tr/td[text()='Original Service Type:']/following::strong/text()"))
['Landline', 'Independent Telephone Company', 'Versailles, KY', 'VRSLKYXADS0']