使用Python lxml进行数据抓取会返回adblocker值

时间:2018-04-13 21:54:40

标签: python web-scraping lxml

我目前正在使用HTML抓取来从我在Discord中创建的机器人的网页获取一些数据。我之前已成功使用lxml从不同的网站上抓取HTML,但是,我现在试图抓取的网站是检测到一个广告拦截器,因此无论我试图抓取哪些数据,我都会收到相同的值;

我的代码如下 `import sys 来自lxml import html 导入请求

def main(arg):     page = requests.get(" https://fortnitetracker.com/profile/pc/" + arg)     tree = html.fromstring(page.content)

killdeath = tree.xpath('//div[@class="stats">K/d]/text()')
print(killdeath)`

我得到的价值是 '\nPlease consider adding Fortnite Tracker to your adblock whitelist! Our ads support the development and hardware costs of running this site. Really hate ads? Become a

2 个答案:

答案 0 :(得分:0)

可能发生的事情是,您获得的初始页面实际上只有“请考虑...”文本,以及一堆实际加载您看到的内容的JavaScript。 (尝试打印出page.content以查看您实际获得的内容。)

无论如何,因为请求库不是一个成熟的Web浏览器,它不会执行JavaScript,所以你只看到广告拦截器消息。

答案 1 :(得分:0)

在网站上说:

  

要使用我们的API,我们要求您使用API​​密钥。要使用API​​密钥,您需要将其作为请求的标头传递。

您是否在请求中添加了标头? 此外,我建议在postman或类似的应用程序中提出请求,以便您实际看到整个响应。