为什么我无法抓住这个网站?

时间:2017-07-12 12:58:07

标签: python web-scraping

说我要抓取以下网址:

https://soundcloud.com/search/sounds?q=edm&filter.created_at=last_week

我有以下python代码:

import requests
from lxml import html

urlToSearch = 'https://soundcloud.com/search/sounds?q=edm&filter.created_at=last_week'
    page = requests.get(urlToSearch)
    tree = html.fromstring(page.content)
    print(tree.xpath('//*[@id="content"]/div/div/div[3]/div/div/div/ul/div/div/text()'))

问题是当我在以下xpath打印文本时:

//*[@id="content"]/div/div/div[3]/div/div/div/ul/div/div

尽管我确认“找到500多首曲目”应该在那里,但[]似乎没有出现。我做错了什么?

2 个答案:

答案 0 :(得分:1)

问题是请求不会生成动态内容。

右键单击页面并查看页面源,您将看到静态内容不包含您在加载动态内容后看到的任何内容。

但是,(使用Chrome)打开开发工具,点击网络和XHR。看起来你可以通过一个API来获取数据,这比抓取更好!

答案 1 :(得分:0)

问题是,对于现代网站,几乎所有网页在加载JavaScript,css等之后都会发生很大变化。在进行任何DOM更新之前,您将获取基本的html,并且看起来与实际访问页面的方式不同用浏览器。

使用Selenium WebDriver框架(主要用于测试自动化),它将模拟加载页面,执行javascripts等。

Selenium Documentation for Python