Web scraping Can';我不知道电话号码显示是如何工作的

Web scraping Can';我不知道电话号码显示是如何工作的,web-scraping,Web Scraping,我对网络抓取还很陌生,最近我正试图自动删除类似这样的网页的电话号码。我不应该使用Selenium/headless url浏览器库,我正试图找到一种方法,使用web服务或任何其他可能的解决方案来实际请求电话号码,希望能够直接给我电话号码,而不必通过Selenium实际按下的按钮 我完全理解,它甚至可能不可能自动显示一个关闭的电话号码,因为这意味着不可访问的八卦新手网络刮板像我一样;但我还是想提出一个问题,让我的信息从专家的角度得到详细的答案 如果我搜索“显示”按钮DOM元素,它会显示一些我以前从

我对网络抓取还很陌生,最近我正试图自动删除类似这样的网页的电话号码。我不应该使用Selenium/headless url浏览器库,我正试图找到一种方法,使用web服务或任何其他可能的解决方案来实际请求电话号码,希望能够直接给我电话号码,而不必通过Selenium实际按下的按钮

我完全理解,它甚至可能不可能自动显示一个关闭的电话号码,因为这意味着不可访问的八卦新手网络刮板像我一样;但我还是想提出一个问题,让我的信息从专家的角度得到详细的答案

如果我搜索“显示”按钮DOM元素,它会显示一些我以前从未见过的标记。我有两个主要的问题,我相信对像我这样的新手会有帮助

1) 给定一组未知的标记/属性(即,数据-q和数据在blow按钮中显示),如何才能找出页面中的哪些脚本实际使用它们

2) 我在谷歌上搜索了button元素的标签,比如:data-q和data-discover,我能找到的唯一相关信息是,出于某种原因,即使我使用proxy,我也无法访问它们

特别是关于第一个问题的任何线索都将不胜感激

问候,

下面是href按钮代码
好的,根据您的需求,在您最终获得解决方案之前,有几个步骤

第一步:打开自己的浏览器并输入目标页面()

第二步:(假设您使用的是Chrome浏览器)按Ctrl+Shift+I打开控制台,然后在控制台中选择“网络”标记

第三步:按下该页面上的“显示”按钮,仔细观察控制台,捕捉当您按下“显示”按钮时立即发送的http请求。您可以在查询字符串参数中看到请求包含一个长的数字字符串,实际上它是一个时间戳

第4步:您还可以看到http请求中有一个名为“请求头”的部分,您应该复制referer、user agent、x-gumtree-token的值

第五步:尝试构造您的请求(我是Python的粉丝,所以我将向您展示我的Python示例代码)

<a href="#" class="btn-secondary set-right is-disabled" data-q="reply-panel-reveal-btn" data-reveal="advertId:1190345514" data-analytics="gaEvent:R2SPhoneBegin,zenoEvent:PhoneEvent,zenoOptions:{adId:1190345514,pageType:VIP}" data-toggler="channel:syi.reveal-phone,className:is-disabled,selfBroadcast:false" aria-expanded="true">Reveal</a>
import time
import requests
import json

headers = {
        'referer': 'please enter the value you just copied from that specific request',
        'user-agent': 'please enter the value you just copied from that specific request',
        'x-gumtree-token': 'please enter the value you just copied from that specific request'
    }

url = 'https://www.gumtree.com/ajax/account/seller/reveal/number/1190345514?_='

current_time = time.time()
current_time = str(current_time)
current_time = current_time.split('.')[0] + current_time.split('.')[1] + '0'
url += current_time
response = requests.get(url=url,headers=headers)
response_result = json.loads(response.content)
phone_number = response_result['data']