专栏名称: python实战
Python实战
目录
相关文章推荐
51好读  ›  专栏  ›  python实战

python: Playwright爬虫神器,从此不用写代码喽

python实战  · 公众号  · Python  · 2022-01-28 20:59

正文

听闻微软出了一款自动化测试工具Playwright,功能类似Selenium,Pyppeteer。又听闻它可以自动生成代码……

从此不写代码了

二话不说,先安装。

pdm init #搞个虚拟环境先
pdm add playwright
pdm run playwright install #安装浏览器驱动

然后,从此码农翻身的时刻到来了:

pdm run playwright codegen -o autorun.py 

左边是浏览器,右边是同步生成的代码。

生成的代码:

好家伙!直呼好家伙!本文结束,完结撒花。

抓取微信文章保存为markdown

还是干点实际的事情吧。

例如用来保存微信公众号文章,输出成markdown。

获取页面内容


def get_html_content(html_url,html_filename,step):
   '''
  获取html页面的内容,相当于ctrl+s
  :param html_url: 抓取的url链接
  :param html_filename: 输出的html文件名
  :param step: 调整页面滚动速度,默认为500
  '''
   with sync_playwright() as p:
       browser = p.chromium.launch(headless=False)
       page = browser.new_page()
       page.goto(html_url)
       page.wait_for_load_state('networkidle')  #等待网络加载完毕再进行操作
       html = page.content()
       with open(html_filename,'w',encoding='utf-8') as f:
           f.write(html)
       browser.close()

处理懒加载图片

经过上一步,发现一个bug,保存的html文件里没有把懒加载的图片给保存下来。

查看官方文档无果,只好添加一段javascript手动执行滚动页面。

# get_html_content.py
def get_html_content(html_url,html_filename,step):
   '''
  获取html页面的内容,相当于ctrl+s

  :param html_url: 抓取的url链接
  :param html_filename: 输出的html文件名
  :param step: 调整页面滚动速度,默认为500
  '''
   with sync_playwright() as p:
       browser = p.chromium.launch(headless=False)
       page = browser.new_page()
       page.set_default_timeout(50000)
       page.goto(html_url)
       page.wait_for_load_state('networkidle')
       #设置滚动坐标初始位置
       start_position = 0  
       #获取整个页面内容高度
       scroll_Height = page.evaluate('window.document.body.scrollHeight')
       while(start_position<scroll_Height):
           #不断增加坐标
           start_position = start_position+step
           position = str(start_position)
           #构造javascript
           run_scroll = 'window.scrollTo(0,'






请到「今天看啥」查看全文