AllValue

中文

  • 中文
  • 繁体中文
  • English
  • 日本語

AllValue

中文

  • 中文
  • 繁体中文
  • English
  • 日本語
  • 首页
  • 产品特性
  • 解决方案

    • 经营场景

      • 国货品牌DTC出海解决方案
      • 国际版微信小程序解决方案
      • B2B解决方案
      • 品牌区域多站点解决方案
    • 运营与营销

      • 分销联盟解决方案
      • 社群营销解决方案
      • 极致移动解决方案
    • 出海国家

      • 北美出海解决方案
  • 商家服务

    • 品牌出海

      • 装修与建站服务
      • 选品指导服务
      • 中国100品牌出海计划
    • 社交营销

      • 网红营销服务
      • 北美社群营销服务
    • 广告投放

      • Google广告投放服务
      • Facebook广告投放服务
  • 套餐价格
  • 跨境学堂

    • 有料学堂

      • 有料学堂
      • 有料公开课
      • 系列专业课
    • 头条博客

      • 头条博客
      • 公司动态
    • 跨境社区

      • 跨境社区
  • 主题模板

    • 全部模板

    • 精选模板

  • 关于我们

    • 品牌故事

    • 联系我们

    • 合作伙伴

  1. 头条博客
  2. 跨境电商
  3. Ajax多线程载入的数据抓取

Ajax多线程载入的数据抓取

2022-05-20 14:51:52

根据前边几集Python网络爬虫的文章内容,许多朋友已经可以自由的抓取自身愿意的数据,就算是一些页面难以剖析,还可以用以前讲解的最终专业技能之「Selenium」 「Webdriver」处理有关问题,但无可奈何这类方法高效率很慢,咋整?今日就为各位详细介绍Ajax多线程载入的数据的抓取。↓↓↓什么是Ajax多线程载入的数据呢?Ajax,全称之为Asynchronous JavaScript and XML,即多线程的JavaScript和XML。它并不是一门计算机语言,反而是利用JavaScript在确保页面不被刷新、页面连接不更改的情形下与网络服务器互换数据并升级一部分网页页面的技术性。针对传统的的网页页面,假如想升级其具体内容,那麼一定要刷新全部页面,但拥有Ajax,便可以在页面不被所有刷新的情形下升级其具体内容。在这个环节中,页面事实上是在后台管理与服务器虚拟机了数据互动,获得到数据以后,再利用JavaScript更改网页页面,那样网页页面便会升级了。简单而言:如同一栋房子,先把圈圈架架搭下去(前面页面架构),再为他室内装修、置办家具(添充数据),这儿的室内装修、置办家具就是ajax请求的数据。。我们可以根据一些网址的例子来形象化的了解一下哪些到底是什么是ajax。例如浏览“美丽说”电子商务平台中的食品目:http://list.mogujie.com/book/food/52026,根据Chrome浏览器能够看见我们与“美丽说”互动的全部数据。示范性:1开启Chrome,浏览http://list.mogujie.com/book/food/520262在Chrome中按F12或是在页面空白点一下鼠标点击→查验。3点一下Clear 和 XHR 按键。4刷新一下页面。5点一下一下左侧的search?callback=JQuery….,再点一下右侧栏的Response其下面会发生一些不明白,但又仿佛有点标准的数据。管它的,先Ctrl A选中复制出去看一下。(假如你将产品列表页再次下降,会发生越来越多的这类数据哦。)6应用Chrome软件「JSON-hanle」或是浏览:https://www.json.cn/将刚刚复制的数据黏贴进来,点一下OK。7再与网页页面上的数据比照一下,见图:如何?是否一目了然,有关数据都是在里边了。这儿的orgPrice为售价、sale为销售量、cfav为关注点赞、price为市场价。这种数据都已经在这里一串乱七八糟的标识符里了,大家必须的就分析这串标识符。实际上呢,这类数据文件格式叫做「Json」。json 是重量级的文字数据互换文件格式,其格式与编程语言中的词典(dict)相近,全是名字/值对(key/value)的文件格式。能取得json数据就已经取得成功90%了,剩余的10%便是解析json取出自身愿意的数据、储存数据。但也并不是所有的Ajax要求取得的全是Json数据,例如amazon他便是那么66的。下边将以大家日常能运用的,抓取reviews来演习一遍Ajax要求:1浏览某产品的全部reviews页面:https://www.amazon.com/product-reviews/ ASIN2reviews能根据大家预期的方法排序,在实际操作下面的图中的筛选条件后会形成新的连接。如将SORT BY转换为Most recent,电脑浏览器搜索框的连接会变成:https://www.amazon.com/product-reviews/B072DXSF6S/ref=cm_cr_arp_d_viewopt_srt?pageNumber=1sortBy=recent若立即应用requests.get该连接,回到的数据并不会依照预期的排列顺序。这类情况下就必须抓包软件、Ajax要求出场了。3Chrome中按F12或是在页面空白点一下鼠标点击→查验。4最先点一下Clear按键,消除已捕获到的数据。再点一下Next→按键,看一下载入一页新的reviews会捕获到什么数据。如下图,捕获到了一个名叫“cm_cr_arp_d_paging_btm_3”的文档。最终点一下Response,看一下这一句文档究竟传送了些哪些。5如下图所示,在Response里的数据与web前端页面的一部分源代码一致。可以评定,amazon是先将评价页面的架构搭好,随后根据Ajax的方法传送表明评价详细信息的前端代码。6再剖析一下此次数据传送的headers、data等数据。这一步特别关键,在数据互动中各种请求头、要求主要参数都是会危害此次要求的传参。在上面中已将一些主要的主要参数进行了表述,便捷大伙儿了解。7下边便是写代码时长了,依照以前的逻辑性我们可以立即应用Ajax要求数据,随后依据回到的数据获得到reviews的网页源码,再进行分析。最先提前准备好headers、cookies等数据。早期后朋友表明headers哪些的太难弄了,且不清楚这里边花哨的一堆是什么意思,今日提醒各位一个简易方式。最先在Chrome控制面板捉到的数据上点一下鼠标左键→Copy→Copy as cURL。如下图:再浏览https://curl.trillworks.com/,在“curl command”里将刚刚复制的cURL黏贴进来,右侧将自动生成Python编码。如下图:嘿咻嘿咻,有多爽。如今只要把右侧的“Python requests”复制出去,黏贴到Pycharm里就可以跑起来啦,是否乐滋滋?。8、开启Pycharm,新建项目,将编码复制进来。能够看见大家必须的headers, cookies, data统统已经备好啦。略微生产加工一下,跑一下看一下。response = requests.post('https://www.amazon.com/hz/reviews-render/ajax/reviews/get/', headers=headers, data=data) 打印出的为: 这与刚刚在Chrome见到的一样,证实大家取得成功获得到了数据。9、将数据梳理一下,并删掉不用的废弃物数据。html_list = list(response.text.replace('', '').split(' ')) reviews_html_list = html_list[6:26] print(len(reviews_html_list)) for i in reviews_html_list: if len(i)==0: reviews_html_list.remove(i)10、解析xml全部目录取下每一个点评的ID。for reviews_html in reviews_html_list: frist_review_soup = BeautifulSoup(eval(reviews_html)[2], 'lxml') review_id = frist_review_soup.find('div', 'a-section review')['id'] 11、写一个分析review宝贝详情的方式,便捷启用。def request_reviews_url(review_id): headers = { 'origin': 'https://www.amazon.com', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-HK,zh-CN;q=0.9,zh;q=0.8', 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36', 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8', 'accept': 'text/html,*/*', 'referer': 'https://www.amazon.com/product-reviews/B00CJHZRW8/ref=cm_cr_arp_d_viewopt_srt?ie=UTF8reviewerType=all_reviewssortBy=helpfulpageNumber=1', 'authority': 'www.amazon.com', 'x-requested-with': 'XMLHttpRequest', 'dnt': '1', } review_url = 'https://www.amazon.com/gp/customer-reviews/' review_id review_html = requests.get(review_url, headers=headers) review_soup = BeautifulSoup(review_html.text, 'lxml') review_title = review_soup.find('a', 'review-title').text print(review_title) review_author = review_soup.find('span', 'review-byline').text.replace('By', '') print(review_author) review_date = review_soup.find('span', 'review-date').text.replace('on ', '') print(review_date) review_text = review_soup.find('span', 'review-text').text print(review_text) 那样就能进行让评价按要求排序,并抓取的需要了。附详细编码:import requests from bs4 import BeautifulSoup def request_reviews_url(review_id): headers = { 'origin': 'https://www.amazon.com', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-HK,zh-CN;q=0.9,zh;q=0.8', 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36', 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8', 'accept': 'text/html,*/*', 'referer': 'https://www.amazon.com/product-reviews/B00CJHZRW8/ref=cm_cr_arp_d_viewopt_srt?ie=UTF8reviewerType=all_reviewssortBy=helpfulpageNumber=1', 'authority': 'www.amazon.com', 'x-requested-with': 'XMLHttpRequest', 'dnt': '1', } review_url = 'https://www.amazon.com/gp/customer-reviews/' review_id review_html = requests.get(review_url, headers=headers) review_soup = BeautifulSoup(review_html.text, 'lxml') review_title = review_soup.find('a', 'review-title').text print(review_title) review_author = review_soup.find('span', 'review-byline').text.replace('By', '') print(review_author) review_date = review_soup.find('span', 'review-date').text.replace('on ', '') print(review_date) review_text = review_soup.find('span', 'review-text').text print(review_text) if ._name__ == '._main__': page = 1 headers = { 'origin': 'https://www.amazon.com', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-HK,zh-CN;q=0.9,zh;q=0.8', 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36', 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8', 'accept': 'text/html,*/*', 'referer': 'https://www.amazon.com/product-reviews/B00CJHZRW8/ref=cm_cr_arp_d_viewopt_srt?ie=UTF8reviewerType=all_reviewssortBy=helpfulpageNumber=1', 'authority': 'www.amazon.com', 'x-requested-with': 'XMLHttpRequest', 'dnt': '1', } while 1: data = { 'sortBy': 'recent', 'reviewerType': 'all_reviews', 'formatType': '', 'mediaType': '', 'filterByStar': '', 'pageNumber': str(page), 'filterByKeyword': '', 'shouldAppend': 'undefined', 'deviceType': 'desktop', # 'reftag': 'cm_cr_arp_d_viewopt_srt', 'pageSize': '10', 'asin': 'B072SS1NTM', # 'scope': 'reviewsAjax1' } response = requests.post('https://www.amazon.com/hz/reviews-render/ajax/reviews/get/', headers=headers, data=data) html_list = list(response.text.replace('', '').split(' ')) reviews_html_list = html_list[6:26] for i in reviews_html_list: if len(i) == 0: reviews_html_list.remove(i) for reviews_html in reviews_html_list: frist_review_soup = BeautifulSoup(eval(reviews_html)[2], 'lxml') review_id = frist_review_soup.find('div', 'a-section review')['id'] request_reviews_url(review_id) page = 1网络爬虫中数据的归类关键有:非结构化数据(json,xml等)和关系型数据库(HTML)。以前的内容中采用的实例都是以总体目标网址取得关系型数据库随后应用正则/xpath等分析,而今日讲是相对来说的非结构化数据,可以应用json或xpath变换为Python相匹配的基本数据类型。找寻非结构化数据很有可能在早期不太好下手、找不着Post的恰当URL,但一旦完成后将事倍功半。照Web发展趋势的趋势看来,以Ajax加载数据信息的方法可能愈来愈广泛。这类形式在Web开发设计上可以保证静态页面,进而减少网络服务器立即3D渲染网页页面产生的工作压力。假如大伙儿兴趣爱好得话还可以亲自动手试着抓取一些别的网址的数据信息哟。教了大伙儿很多期的网络爬虫,大伙儿有学会了的吗?感觉实用的朋友们可以共享下微信朋友圈!或有哪些问题,热烈欢迎留言板留言探讨哦!▼以往精彩回顾▼任佳伟:应用「WebScraper」爬取产品信息Python网络爬虫:应用「Selenium」 「Chromedriver」爬丧尸连接Python网络爬虫:应用「Requests」 「bs4」写amazon网络爬虫好文章!务必关注点赞

部分文章来源于网络,如有侵权,请联系 caihong@youzan.com 删除。

标签:

相关文章

  • Facebook广告被定位在哪一群人?
  • 没有网站?不要担心,亚马逊允许你去创建一个店铺
  • Pinterest在网络营销领域里扮演着重要的角色
  • 如何在facebook上做企业的推广
  • pinterest引流技巧分享

热门标签

评论

    添加优质配图将会得到更多人回答,媒体大小小于2M,建议尺寸:200x200

评论提交成功

评论有以下违规词汇

删除成功

评论

确定删除此评论吗

  • 未读列表
  • 已读列表

消息类型标题

2021-08-24 12:45

消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容消息详细内容

  • 产品与服务
  • 产品特性
  • 商家服务
  • 主题模板
  • 套餐价格
  • 帮助中心
  • 解决方案
  • 品牌DTC解决方案
  • B2B解决方案
  • 极致移动解决方案
  • 分销联盟解决方案
  • 北美出海解决方案
  • 关于我们
  • 品牌故事
  • 开发者中心
  • 用户协议
  • 隐私政策
  • 跨境学堂
  • 有料学堂
  • 博客头条
  • 跨境社区
  • 联系方式
  • 商家服务: 15814458155
  • 渠道专线: 15814458155
  • 市场合作: 15814458155
  • 官方账号
  • 邮箱: info@allvalue.com
  • AllValue公众号

    加入华人社群

©2024 allvalue.com Rights Reserved|浙ICP备2020040621号

  • 产品与服务

    • 产品特性

    • 商家服务

    • 主题模板

    • 套餐价格

    • 帮助中心

  • 解决方案

    • 品牌DTC解决方案

    • B2B解决方案

    • 极致移动解决方案

    • 分销联盟解决方案

    • 北美出海解决方案

  • 关于我们

    • 品牌故事

    • 开发者中心

    • 用户协议

    • 隐私政策

  • 跨境学堂

    • 有料学堂

    • 博客头条

    • 跨境社区

  • 联系方式

    商家服务: 15814458155

    渠道专线: 15814458155

    市场合作: 15814458155

  • 官方账号

    邮箱: info@allvalue.com

    • AllValue公众号

    • 加入华人社群

  • ©2024 allvalue.com Rights Reserved|浙ICP备2020040621号