异步加载又叫非阻塞加载,浏览器在下载执行js的同时,还会继续进行后续页面的处理。
常见的形式就是下拉页面出现新的内容
本次就是要爬取这些动态加载出的内容
以KnewOne网站上discover页为例,下拉会获取新的内容,检查网页源码时会发现,随着下拉会出现新的div,是Page的数值发生了改变
爬取代码如下:
import requests from bs4 import BeautifulSoup import time url='https://knewone.com/discover?page=2' def getPage(url): 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') for img,title in zip(imgs,titles): data={ 'img':img.get('src'), 'title':title.get('title') } print(data) def get_more(start,end):#取连续下拉的几页内容 for one in range(start,end): getPage(url+str(one)) time.sleep(3) get_more(2,5)