抓取网页异步加载数据

这里,我用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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,107评论 19 139
  • AJAX 原生js操作ajax 1.创建XMLHttpRequest对象 var xhr = new XMLHtt...
    碧玉含香阅读 8,706评论 0 7
  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 9,028评论 1 19
  • 本文详细介绍了 XMLHttpRequest 相关知识,涉及内容: AJAX、XMLHTTP、XMLHttpReq...
    semlinker阅读 14,698评论 2 18
  • 那些晦涩的文字 堆砌的不是什么时尚 而是淡淡阅历中 透露出的清香 呕哑嘲哳不是美的向往 或许 只是一种异样的向往
    liuwqself阅读 1,783评论 0 0

友情链接更多精彩内容