Python爬虫实战--(三)获取网页中的动态数据

常见的动态数据是我们下拉下滑栏时,网页上面可以动态加载出来的新的数据。譬如下面这个网站:
https://knewone.com/discover
我们不断地下拉下滑栏,会不断地有新数据加载出来。但是网页的URL却一直保持不变。但其实在我们下拉的时候浏览器会发送一个新的异步请求来获得这些新的数据,只是新的异步请求的URL没有显示到浏览器上。所以获取网页中的动态数据的关键就在于获取异步发送URL并发现其格式上的规律。

获取异步发送的URL

在Chrome上打开网页–>右键点击审查–>点击Network–>点击XHR–>下拉网页加载动态数据–>获取发送的请求–>获得请求头部的Request URL信息。
Python爬虫实战--(三)获取网页中的动态数据_第1张图片
通过上面的步骤我们获得了异步请求的URL,通过分析可以发现异步请求URL之间的差别在于”page=xx”部分。如果我们要爬取10份动态数据,那么我们需要10个URL,其中page的值从1到10。下面给出爬取的完整代码。爬取原理和之前相同,区别只在于URL是异步请求的URL。

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))
        time.sleep(2)


get_more_pages(1,10)

你可能感兴趣的:(Python爬虫)