在使用網(wǎng)站中,我們會發(fā)現(xiàn)一種網(wǎng)站的翻頁是自動(dòng)實(shí)現(xiàn)的,這里其實(shí)是利用js來自動(dòng)加載而成,對于這樣的網(wǎng)站,我們必須采取新的策略。
參考代碼:
from bs4 import BeautifulSoup
import requests
import time
url = 'https://knewone.com/discover?page='
# 定義一個(gè)網(wǎng)頁的爬取行為
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)
# 定義許多網(wǎng)頁的資料爬取
def get_more_pages(start,end):
for one in range(start,end):
get_page(url+str(one)) #這里是2個(gè)字符串相加,就成了下一頁的網(wǎng)址
time.sleep(2)
get_more_pages(1,10)
好了,以上是全部代碼?那這段代碼是如何找到不同頁面的規(guī)律的?
因?yàn)榫W(wǎng)頁是異步加載,所以,我們先點(diǎn)擊 檢查 ,進(jìn)入網(wǎng)頁元素頁面,點(diǎn)擊 network,再點(diǎn)擊 XHR ,下翻頁面,會看到name行有新的網(wǎng)頁地址進(jìn)來,這里就是我們要的新網(wǎng)頁,從新網(wǎng)頁中找到規(guī)律:
該網(wǎng)頁的規(guī)律是在基礎(chǔ)網(wǎng)頁的后面加數(shù)字,翻一頁,增加 +1,所以,代碼就這么表示了 get_page(url+str(one))

示意

解說