存储过程写法mysql简单Pyppeteer⼊门及中⽂教程
参考:
1. 爬⾍神器 Pyppeteer 介绍及爬取某商城实战
2. Pyppeteer:⽐selenium更⾼效的爬⾍界的新神器
3. pyppeteer.github.io/pyppeteer/reference.html#pyppeteer.page.Page.querySelector
4. www.w3cschool/puppeteer/puppeteer-yi2c37sc.html
因为有些⽹页是可以检测到是否是使⽤了selenium。并且selenium所谓的保护机制不允许跨域cookies保存以及登录的时候必须先打开⽹页然后后加载cookies再刷新的⽅式很不友好。
所以采⽤⾕歌chrome官⽅⽆头框架puppeteer的python版本pyppeteer
1. Pyppeteer 简介
1.1 C hr om e 浏览器和 C hr om ium 浏览器
在 Pyppetter 中,实际上它背后也是有⼀个类似 Chrome 浏览器的 Chromium 浏览器在执⾏⼀些动作进⾏⽹页渲染,⾸先说下 Chrome 浏览器和 Chromium 浏览器的渊源。
Chromium 是⾕歌为了研发 Chrome ⽽启动的项⽬,是完全开源的。⼆者基于相同的源代码构建,Chrome 所有的新功能都会先在
Chromium 上实现,待验证稳定后才会移植,因此 Chromium 的版本更新频率更⾼,也会包含很多新的功能,但作为⼀款独⽴的浏览
器,Chromium 的⽤户体要⼩众得多。两款浏览器“同根同源”,它们有着同样的 Logo,但配⾊不同,Chrome 由蓝红绿黄四种颜⾊组成,⽽ Chromium 由不同深度的蓝⾊构成。
Pyppeteer 就是依赖于 Chromium 这个浏览器来运⾏的。那么有了 Pyppeteer 之后,我们就可以免去那些繁琐的环境配置等问题。如果第⼀次运⾏的时候,Chromium 浏览器没有安装,那么程序会帮我们⾃动安装和配置,就免去了繁琐的环境配置等⼯作。另外 Pyppeteer 是基于Python 的新特性 async 实现的,所以它的⼀些执⾏也⽀持异步操作,效率相对于 Selenium 来说也提⾼了。
注意:本来chrome就问题多多,puppeteer也是各种坑,加上pyppeteer是基于前者的改编python版本,也就是产⽣了只要前两个有⼀个有bug,那么pyppeteer就会原封不动的继承下来,本来这没什么,但是现在遇到的问题就是pyppeteer这个项⽬从18年9⽉份之后就没更新过了,前两者都在不断的更新迭代,⽽pyppeteer⼀直不更新,导致很多bug根本没⼈修复。
1.2 as yncio
# 是否启⽤JS,enabled设为False,则⽆渲染效果
await page.setJavaScriptEnabled(enabled=True)
# 超时间见 1000 毫秒电商系统源码服务好的商家
jspresponse对象res = ('utiao/', options={'timeout': 1000})
resp_headers = res.headers # 响应头
resp_status = res.status # 响应状态
# 等待
await asyncio.sleep(2)
# 第⼆种⽅法,在while循环⾥强⾏查询某元素进⾏等待
while not await page.querySelector('.t'):
pass
# 滚动到页⾯底部
await page.evaluate('window.scrollBy(0, document.body.scrollHeight)')
await asyncio.sleep(2)
# 截图保存图⽚
await page.screenshot({'path': 'toutiao.png'})
# 打印页⾯cookies
print(kies())
maven项目plugins全部爆红""" 打印页⾯⽂本 """
# 获取所有 html 内容
print(t())
# 在⽹页上执⾏js 脚本
dimensions = await page.evaluate(pageFunction='''() => {
return {
width: document.documentElement.clientWidth, // 页⾯宽度
height: document.documentElement.clientHeight, // 页⾯⾼度
deviceScaleFactor: window.devicePixelRatio, // 像素⽐ 1.0000000149011612
}
}''', force_expr=False) # force_expr=False 执⾏的是函数
print(dimensions)
# 只获取⽂本执⾏ js 脚本 force_expr 为 True 则执⾏的是表达式
content = await page.evaluate(pageFunction='Content', force_expr=True) print(content)
# 打印当前页标题
print(await page.title())
# 抓取新闻内容可以使⽤ xpath 表达式
"""
# Pyppeteer 三种解析⽅式
Page.querySelector() # 选择器
Page.querySelectorAll()
Page.xpath() # xpath 表达式
# 简写⽅式为:
Page.J(), Page.JJ(), and Page.Jx()
"""
汇编语言怎么写程序element = await page.querySelector(".feed-infinite-wrapper > ul>li") # 纸抓取⼀个
print(element)
# 获取所有⽂本内容执⾏ js
content = await page.evaluate('(element) => Content', element)
print(content)
# elements = await page.xpath('//div[@class="title-box"]/a')
elements = await page.querySelectorAll(".title-box a")
for item in elements:
print(Property('textContent'))
# &ution_context.JSHandle object at 0x000002220E7FE518>
# 获取⽂本
title_str = await (Property('textContent')).jsonValue()
# 获取链接
python入门教程非常详细下载title_link = await (Property('href')).jsonValue()
print(title_str)
print(title_link)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论