python 异步加载图片_Python爬虫学习笔记(1.3)爬取网站异步加载数据

异步加载数据:简单的举个例子,有些网页不需要换页,只要网页上的滚动条滑到最下方,它就会自动加载部分数据,和瀑布流一样,可以持续不断的加载数据 ,这些持续加载的数据就属于异步数据(由js控制,和请求网址的Request不是一起的)。

首先,使用浏览器工具检查,选择Network下的XHR,然后鼠标往下滑,让网页不断的加载数据,观察XHR的变化,如图。

629362c4872b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

1F33799E-A4BD-433D-AEB1-E5FB51DF531A.png

实际上不难看出,只是在Request URL的末尾加上了页码后缀。

然后检查元素,鼠标继续往下滑,让它加载数据,然后观察网页源代码的变化。

629362c4872b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

89F92588-D667-4D30-8143-3B11DD307995.png

通过观察发现,每次加载数据之后,网页中就会多出几个class="thing"的article标签。然后打开其中的一个article标签就可以发现我们要爬取的元素。

629362c4872b?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

A63085A8-FCF1-4EC3-8394-4D8DE4FBB645.png

分析完页面元素之后,下面用代码来实现其中一个页面的爬取。

from bs4 import BeautifulSoup

import requests

url = 'https://knewone.com/things/?page=2'

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')

for img,title,link in zip(imgs,titles,links):

data = {

'img':img.get('src'),

'title':title.get('title'),

'link':link.get('href')

}

print(data)

完成之后接下来做多页面的爬取,并且设计一个自控页码的函数,最终代码如下。

from bs4 import BeautifulSoup

import requests

import time

url = 'https://knewone.com/things/?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(1)

get_more_pages(1,8)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值