抓取网页异步加载数据

这里,我用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)
    原文作者:有苦向瓜诉说
    原文地址: https://www.jianshu.com/p/aec1d7fbb7d4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞