在使用网站中,我们会发现一种网站的翻页是自动实现的,这里其实是利用js来自动加载而成,对于这样的网站,我们必须采取新的策略。
参考代码:
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)) #这里是2个字符串相加,就成了下一页的网址
time.sleep(2)
get_more_pages(1,10)
好了,以上是全部代码?那这段代码是如何找到不同页面的规律的?
因为网页是异步加载,所以,我们先点击 检查 ,进入网页元素页面,点击 network,再点击 XHR ,下翻页面,会看到name行有新的网页地址进来,这里就是我们要的新网页,从新网页中找到规律:
该网页的规律是在基础网页的后面加数字,翻一页,增加 +1,所以,代码就这么表示了 get_page(url+str(one))
网友评论