python网页数据抓取(下拉下滑栏时会发送一个新异步发送URL(图) )
优采云 发布时间: 2021-10-25 20:11python网页数据抓取(下拉下滑栏时会发送一个新异步发送URL(图)
)
常见的动态数据是我们下拉滑动条时可以在网页上动态加载的新数据。例如,以下 网站:
我们继续下拉滑动条,新的数据会继续加载。但是网页的 URL 保持不变。但实际上,当我们下拉时,浏览器会发送一个新的异步请求来获取这些新数据,但是新的异步请求的 URL 并没有显示在浏览器上。因此,获取网页中动态数据的关键是获取异步发送的URL,并发现其格式规律。
获取异步发送的 URL
在 Chrome 上打开网页 -> 右键查看 -> 点击网络 -> 点击 XHR -> 下拉网页加载动态数据 -> 获取发送的请求 -> 获取请求头中的请求 URL 信息。
通过以上步骤,我们就获取到了异步请求的URL。通过分析,我们可以发现异步请求URL的区别在于“page=xx”部分。如果我们要抓取10条动态数据,那么我们需要10个URL,其中page的取值范围为1到10。完整的抓取代码如下。爬取的原理和之前一样,唯一不同的是URL是一个异步请求的URL。
from bs4 import BeautifulSoup
import requests
import time
url = 'https://knewone.com/discover?page='
def get_page(url,data=None):
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text,'lxml')
imgs = soup.select('a.cover-inner > img')
titles = soup.select('section.content > h4 > a')
links = soup.select('section.content > h4 > a')
if data==None:
for img,title,link in zip(imgs,titles,links):
data = {
'img':img.get('src'),
'title':title.get('title'),
'link':link.get('href')
}
print(data)
def get_more_pages(start,end):
for one in range(start,end):
get_page(url+str(one))
time.sleep(2)
get_more_pages(1,10)