这里,我用python抓取了knowone发现页面的数据。
异步加载:
异步加载可以实现网页的瀑布流形式
向网站进行一次请求,一次只传部分数据。如:有些网页不需要点击下一页,其内容也可以源源不断地加载。
如何发现异步加载?
1、打开浏览器,右键选择“检查”
2、点击“Network”、“XHR”
这样在网页进行不断下拉的过程中,显示器会记录全部动作。可以看到不断加载新的页。
分析:异步加载的数据在浏览器中看url是不会变化的,但是其实已经访问了其他的url,在检查的时候检查xhr,可以得到这些url,然后用爬虫取访问这些连接即可。
同时还要注意,不要爬太快,以免ip被封,可以使用time模块里的sleep来降低爬取速度。
from bs4 import BeautifulSoup
import requests,time
url = 'https://knewone.com/discover?page='
count = 0
def get_page(url,data=None):
global count
count = count +1
print(count)
web_data = requests.get(url,timeout = 30)
soup = BeautifulSoup(web_data.text,'lxml')
titles_and_hrefs = soup.select('section.content > h4.title > a')
images = soup.select('a.cover-inner > img')
if data is None:
for titles_and_href,image in zip(titles_and_hrefs,images):
data = {
'title':titles_and_href.get_text().strip(),
'href':titles_and_href.get('href'),
'image':image.get('src')
}
print(data)
def get_more_pages(start,end):
for each in range(start,end):
get_page(url+str(each))
time.sleep(2) #休眠几秒,防止过快
get_more_pages(1,7)