定制软件开发playwright网络爬虫实战案例分享

点击上方“Python定制软件开发爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python定制软件开发从入门到进阶共10本电子书

定制软件开发不寝听金钥,定制软件开发因风想玉珂。

大家好,我是者。

一、前言

前几天在Python定制软件开发白银交流群【HugoLB】定制软件开发分享了一个playwright定制软件开发网络爬虫利器,定制软件开发如下图所示。

感觉挺有意思,上手难度也不算太大,这里整理一份小教程分享给大家,后面遇到常规爬不动的网站,不妨试试看这个利器,兴许会事半功倍哦!

二、实现过程

这里使用新发地网站做一个简单的示例,新发地网站最开始的时候是get请求,去年的时候开始使用post请求方式,网页发生了变化,其实你正常使用网络爬虫的常规方式,也是可以获取到数据的,而且效率也很高,这里我是为了给大家做一个playwright网络爬虫示例,拿这个网站小试下牛刀。言归正传,一起来看看吧!

新发地网站的首页如下图所示:

进入网页之后,可以看到网页的url,然后点击右侧的查看更多,即可进入到详情页,如下图所示:

此时可以看得到更多的数据量了,这里只是用一两个页面做一个示例,更多的页面等大家自己去挖掘。

启动浏览器抓包,点击网页的下一页,可以看到响应数据如下图所示:

此时的请求参数如下图所示:

依次再点击下一页,可以看到Request URL是不变的,变化的是Payload里边的current参数。

此时的请求参数如下图所示:

那么到这里的话,网页变化的规律其实已经很明显了,接下来我们只需要上playwright代码就行了,代码框架是固定的,只需要更改两个url即可,第一个是主页的url,第二个就是响应数据的response.url,具体的代码如下所示:

  1. from playwright.sync_api import Playwright, sync_playwright
  2. import datetime
  3. from pprint import pprint
  4. import traceback
  5. import logging
  6. from tqdm import tqdm
  7. import json
  8. # pip install playwright,然后终端 playwright install
  9. """
  10. 先用playwright写一个普通的登入网站代码,然后page.goto前面加上
  11. page.on("request", lambda request: handle(request=request, response=None))
  12. page.on("response", lambda response: handle(response=response, request=None))
  13. 然后可以写一个handle自定义函数,args为response和request,然后后面想怎么处理数据都可以
  14. """
  15. # setup logging
  16. logging.basicConfig(format='%(asctime)s | %(levelname)s : %(message)s', level=logging.INFO)
  17. def handle_json(json):
  18.     # process our json data
  19.     # print(json)
  20.     for i in range(20):
  21.         data_list = json['list'][i]
  22.         # print(data_list)
  23.         id = data_list['id']
  24.         prodName = data_list['prodName']
  25.         prodCat = data_list['prodCat']
  26.         place = data_list['place']
  27.         print(id, prodName, prodCat, place)
  28. def handle(request, response):
  29.     if response is not None:
  30.         # response url 是网站请求数据的url
  31.         if response.url == 'http://www.xinfadi.com.cn/getPriceData.html':
  32.             handle_json(response.json())
  33. def run(playwright: Playwright) -> None:
  34.     browser = playwright.chromium.launch(headless=False)
  35.     context = browser.new_context(ignore_https_errors=True)
  36.     # Open new page
  37.     page = context.new_page()
  38.     page.on("request", lambda request: handle(request=request, response=None))
  39.     page.on("response", lambda response: handle(response=response, request=None))
  40.     # url是网页加载的URL
  41.     url = 'http://www.xinfadi.com.cn/index.html'
  42.     page.goto(url)
  43.     # 然后之前看到有说道网站动态加载,拖动的问题。playwright可以直接用page.mouse.wheel(0, 300)解决
  44.     page.wait_for_timeout(50000)
  45.     # ---------------------
  46.     context.close()
  47.     page.close()
  48.     browser.close()
  49. with sync_playwright() as playwright:
  50.     run(playwright)

运行之后的结果如下所示:

可以看到数据已经成功拿下了。在handle_json()这个函数里边,你可以针对获取到的数据做进一步的处理,如提取,保存等,也可以直接打印出来看效果,看你自己的需求了。

如果有遇到问题,随时联系我解决,欢迎加入我的Python学习交流群。

三、总结

大家好,我是Python进阶者。这篇文章主要分享了一个playwright网络爬虫实战案例教程,文中针对该问题给出了具体的解析和代码实现。

最后感谢粉丝【HugoLB】分享,感谢【月神】、【瑜亮老师】、【此类生物】、【猫药师Kelly】、【冯诚】等人参与学习交流。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------

往期精彩文章推荐:



欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发