当前位置: 首页 > news >正文

嘉兴手机网站建设帝国cms做网站流程

嘉兴手机网站建设,帝国cms做网站流程,wordpress 免费采集插件,c2c网站有哪些?大家好啊#xff0c;辣条哥又来猛货了#xff01; 小白慎入#xff01; 目录 环境安装1 测试样例2 基本配置2.0 基本参数2.1 设置窗口2.2 添加头部2.3 网页截图2.4 伪装浏览器 绕过检测2.5案例演示 触发JS2.6 boss直聘cookie反爬绕过实践2. 7滚动到页面底部 3 进阶使用4 数… 大家好啊辣条哥又来猛货了 小白慎入 目录 环境安装1 测试样例2 基本配置2.0 基本参数2.1 设置窗口2.2 添加头部2.3 网页截图2.4 伪装浏览器 绕过检测2.5案例演示 触发JS2.6 boss直聘cookie反爬绕过实践2. 7滚动到页面底部 3 进阶使用4 数据提取5 获取属性6 登录案例7 综合案例 Puppeteer 是 Google 基于 Node.js 开发的一个工具而 Pyppeteer 又是什么呢它实际上是Puppeteer 的 Python 版本的实现但它不是Google 开发的是一位来自于日本的工程师依据Puppeteer 的一些功能开发出来的非官方版本。 在 Pyppetter 中实际上它背后也是有一个类似 Chrome 浏览器的 Chromium 浏览器在执行一些动作进行网页渲染首先说下 Chrome 浏览器和 Chromium 浏览器的渊源。 总的来说两款浏览器的内核是一样的实现方式也是一样的可以认为是开发版和正式版的区别功能上基本是没有太大区别的。 环境安装 pip install pyppeteer注意 支持异步需要3.5以上的解释器 import pyppeteer print(pyppeteer.__chromium_revision__) # 查看版本号 print(pyppeteer.executablePath()) # 查看 Chromium 存放路径 # pyppeteer-install 帮助你去安装谷歌如果无法启动需要手动改文件路径 官方网站https://miyakogi.github.io/pyppeteer/reference.html 1 测试样例 from pyppeteer import launch import asyncio import time async def main(): # 启动一个浏览器 browser await launch(headlessFalse,args[--disable-infobars,--windowsize1920,1080]) # 创建一个页面 page await browser.newPage() # 跳转到百度 await page.goto(http://www.baidu.com/) # 输入要查询的关键字type 第一个参数是元素的selector第二个是要输入的关键字 await page.type(#kw,pyppeteer) # 点击提交按钮 click 通过selector点击指定的元素 await page.click(#su) time.sleep(3) await browser.close() asyncio.get_event_loop().run_until_complete(main())2 基本配置 2.0 基本参数 params{ # 关闭无头浏览器 headless: False, dumpio:True, # 防止浏览器卡住 ruserDataDir:./cache-data, # 用户文件地址 args: [ --disable-infobars, # 关闭自动化提示框 --window-size1920,1080, # 窗口大小 --log-level30, # 日志保存等级 建议设置越小越好要不然生成的日志占用的空间会 很大 30为warning级别 --user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36, --no-sandbox, # 关闭沙盒模式 --start-maximized, # 窗口最大化模式 --proxy-serverhttp://localhost:1080 # 代理 ], }2.1 设置窗口 # UI模式 频闭警告 browser await launch(headlessFalse, args[--disable-infobars]) page await browser.newPage() await page.setViewport({width: 1200, height: 800})2.2 添加头部 await page.setUserAgent(Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5)2.3 网页截图 page.screenshot(pathexample.png)2.4 伪装浏览器 绕过检测 Object.defineProperty() 方法会直接在一个对象上定义一个新属性或者修改一个对象的现有属性并 返回此对象。 # 伪装 await page.evaluateOnNewDocument(() { Object.defineProperties(navigator, { webdriver:{ get: () false } })}) await page.goto(https://intoli.com/blog/not-possible-to-block-chromeheadless/chrome-headless-test.html)2.5案例演示 触发JS async def run(): browser await launch() page await browser.newPage() await page.setViewport({width: 1200, height: 800}) await page.goto(https://www.zhipin.com/job_detail/? query%E8%85%BE%E8%AE%AF%E7%88%AC%E8%99%ABcity101020100industryposition) dimensions await page.evaluate(() { return { cookie: window.document.cookie, } }) print(dimensions,type(dimensions)) asyncio.get_event_loop().run_until_complete(run())2.6 boss直聘cookie反爬绕过实践 import asyncio,requests from pyppeteer import launch async def run(): browser await launch() page await browser.newPage() await page.setUserAgent(Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5) await page.setViewport(viewport{width: 1536, height: 768}) await page.evaluateOnNewDocument(() { Object.defineProperties(navigator, { webdriver:{ get: () false } }) }) await page.goto(https://www.zhipin.com/job_detail/? query%E8%85%BE%E8%AE%AF%E7%88%AC%E8%99%ABcity101020100industryposition) dimensions await page.evaluate(() { return { cookie: window.document.cookie, } }) headets { user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36, cookie: dimensions.get(cookie) } res requests.get( https://www.zhipin.com/job_detail/? query%E8%85%BE%E8%AE%AF%E7%88%AC%E8%99%ABcity101020100industryposition, headersheadets) print(res.text)注boss主要是cookie token反爬还有IP监测 2. 7滚动到页面底部 await page.evaluate(window.scrollBy(0, document.body.scrollHeight))接下来看看它的参数简介 ignoreHTTPSErrors (bool)是否要忽略 HTTPS 的错误默认是 False。 headless (bool)是否启用 Headless 模式即无界面模式如果devtools 这个参数是 True 的 话那么该参数就会被设置为 False否则为 True即默认是开启无界面模式的。 executablePath (str)可执行文件的路径如果指定之后就不需要使用默认的 Chromium 了可 以指定为已有的 Chrome 或 Chromium。 slowMo (int|float)通过传入指定的时间可以减缓 Pyppeteer 的一些模拟操作。 args (List[str])在执行过程中可以传入的额外参数。 ignoreDefaultArgs (bool)不使用 Pyppeteer 的默认参数如果使用了这个参数那么最好通过 args 参数来设定一些参数否则可能会出现一些意想不到的问题。这个参数相对比较危险慎用。 handleSIGINT (bool)是否响应 SIGINT 信号也就是可以使用 Ctrl C 来终止浏览器程序默认 是 True。 handleSIGTERM (bool)是否响应 SIGTERM 信号一般是 kill 命令默认是 True。 handleSIGHUP (bool)是否响应 SIGHUP 信号即挂起信号比如终端退出操作默认是 True。 dumpio (bool)是否将 Pyppeteer 的输出内容传给 process.stdout 和 process.stderr 对象默 认是 False。 userDataDir (str)即用户数据文件夹即可以保留一些个性化配置和操作记录。 env (dict)环境变量可以通过字典形式传入。 devtools (bool)是否为每一个页面自动开启调试工具默认是 False。如果这个参数设置为True那么 headless 参数就会无效会被强制设置为 False。 logLevel (int|str)日志级别默认和 root logger 对象的级别相同。 autoClose (bool)当一些命令执行完之后是否自动关闭浏览器默认是 True。 loop (asyncio.AbstractEventLoop)事件循环对象。 3 进阶使用 import asyncio from pyppeteer import launch from pyquery import PyQuery as pq async def main(): browser await launch(headlessFalse) # 打开浏览器 page await browser.newPage() # 开启选项卡 # 输入地址访问页面 await page.goto(https://careers.tencent.com/search.html?keywordpython) # 调用选折器 await page.waitForXPath(//div[classrecruit-wrap recruit-margin]/div) # 获取网页源代码 doc pq(await page.content()) # 提取数据 title [item.text() for item in doc(.recruit-title).items()] print(title:, title) # 关闭浏览器 await browser.close() # 启动异步方法 asyncio.get_event_loop().run_until_complete(main())4 数据提取 # 在页面内执行 document.querySelector。如果没有元素匹配指定选择器返回值是 None J querySelector # 在页面内执行 document.querySelector然后把匹配到的元素作为第一个参数传给 pageFunction Jeval querySelectorEval # 在页面内执行 document.querySelectorAll。如果没有元素匹配指定选择器返回值是 [] JJ querySelectorAll # 在页面内执行 Array.from(document.querySelectorAll(selector))然后把匹配到的元素数组 作为第一个参数传给 pageFunction JJeval querySelectorAllEval # XPath表达式 Jx xpath # Pyppeteer 三种解析方式 Page.querySelector() # 选择器 css 选择器 Page.querySelectorAll() Page.xpath() # xpath 表达式 # 简写方式为 Page.J(), Page.JJ(), and Page.Jx()5 获取属性 提取目标地址https://pic.netbian.com/4kmeinv/index.html 所有的图片资源 async def mains1(): browser await launch(headlessFalse, args[--disable-infobars]) page await browser.newPage() await page.setUserAgent(Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5) await page.setViewport(viewport{width: 1536, height: 768}) await page.evaluateOnNewDocument(() { Object.defineProperties(navigator, { webdriver:{ get: () false } }) }) await page.goto(https://pic.netbian.com/4kmeinv/index.html) elements await page.querySelectorAll(.clearfix li a img) for item in elements: # 获取连接 title_link await (await item.getProperty(src)).jsonValue() print(title_link) await browser.close() asyncio.get_event_loop().run_until_complete(mains1())6 登录案例 import asyncio from pyppeteer import launch async def mains2(): browser await launch({headless: False, args: [--disable-infobars, - -window-size1920,1080]}) page await browser.newPage() await page.setViewport({width: 1920, height: 1080}) await page.goto(https://www.captainbi.com/amz_login.html) await page.evaluateOnNewDocument(() { Object.defineProperties(navigator, { webdriver:{ get: () false } }) }) await page.type(#username, 13555553333) # 账号 await page.type(#password, 123456) # 密码 await asyncio.sleep(2) await page.click(#submit,{timeout: 3000}) import time # await browser.close() print(登录成功) asyncio.get_event_loop().run_until_complete(mains2())7 综合案例 # encoding: utf-8author: 夏洛 QQ: 1972386194 site: https://www.tulingxueyuan.cn/ file: 唯品会.pyimport requests from lxml import etree from loguru import logger import pandas as pd from utils import ua import asyncio from pyppeteer import launch class Wph(object): def __init__(self,url,name): self.url url self.name name self.headers { user-agent: ua.get_random_useragent() } self.session requests.session() self.hadlnone lambda x:x[0] if x else async def main(self,url): global browser browser await launch() page await browser.newPage() await page.goto(url) text await page.content() # 返回页面html return text def spider(self): df pd.DataFrame(columns[品牌, 标题, 原价, 现价, 折扣]) # 发起HTTP请求 # https://category.vip.com/suggest.php? keyword%E5%8F%A3%E7%BA%A2brand_sn10000359 res self.session.get(self.url,params{keyword:self.name},headers self.headers,verifyFalse) html etree.HTML(res.text) url_list html.xpath(//div[classc-filter-groupcontent]/div[contains(class,c-filter-group-scroll-brand)]/ul/li/a/href) # 迭代品牌URL地址 for i in url_list: ua.wait_some_time() # 驱动浏览器 请求 page_html asyncio.get_event_loop().run_until_complete(self.main(http: i)) # 获取网页源代码 page etree.HTML(page_html) htmls page.xpath(//section[idJ_searchCatList]/div) # 迭代商品URL列表 for h in htmls[1:]: # 评判 pingpai self.hadlnone(h.xpath(//div[contains(class,cbreadcrumbs-cell-title)]/span/text())) # 标题 title self.hadlnone(h.xpath(.//div[contains(class,cgoods-item__name)]/text())) # 价格 原价 y_price self.hadlnone(h.xpath(.//div[contains(class,cgoods-item__market-price)]/text())) # 卖价 x_price self.hadlnone(h.xpath(.//div[contains(class,cgoods-item__sale-price)]/text())) # 折扣 zk self.hadlnone(h.xpath(.//div[contains(class,c-goodsitem__discount)]/text())) logger.info(f品牌{pingpai}标题{title}原价{y_price}现价 {x_price}折扣{zk}) # 构造字典 pro { 品牌:pingpai, 标题:title, 原价:y_price, 现价:x_price, 折扣:zk } df df.append([pro]) df.to_excel(唯品会数据2.xlsx,indexFalse) return df def __del__(self): browser.close() if __name__ __main__: url https://category.vip.com/suggest.php name 香水 w Wph(url,name) w.spider()
http://www.tj-hxxt.cn/news/230146.html

相关文章:

  • 手机建立网站appwordpress 本地 插件
  • ps做电商网站尺寸是多少荆州网络推广公司
  • 汕头网站推广系统英文网站外链查询
  • 品牌形象网站有哪些兰州正规的装修公司
  • wordpress建站教程道一网站排名软件利搜
  • 网站ico如何修改上海正规做网站公司有哪些
  • jsp网站开发之html入门知识wordpress 数据库同步
  • 做外贸哪个网站最好什么软件可以自主建设网站
  • 西丽建设网站谷歌浏览器怎么下载
  • 国家示范校建设网站网站页面怎么优化
  • 找设计方案的网站h5商城网站是什么
  • 济宁教育平台网站建设wordpress竖版图片尺寸
  • 做网站图标wordpress图片轮播插件
  • 专门做美食的视频网站有哪些甘肃网站seo技术厂家
  • 当下网站建设网站空间购买流程
  • 淘宝客做的好的几个网站免费qq刷赞网站推广
  • 淘宝客怎么样做自己的网站广西网站建设智能优化
  • 图做的好的网站wordpress置顶文章全文显示
  • wordpress 启用多站点防伪查询网站
  • 数据来源于网站怎么做参考文献延津县建设局网站
  • 网站建设主机类型怎么选html整个页面添加背景图片
  • 北京服饰网站建设网页设计一般尺寸
  • 长泰建设局网站苏州网站建设制作公司
  • 网站开发留言板代码西部数据网站管理助手
  • 做电影网站用什么空间中国建设银行福清分行网站
  • 两个域名同一个网站做优化苏州苏州设计公司
  • 产品导航网站源码wordpress 收不到邮件
  • 关于美食网站的问卷调查怎么做wordpress导入火车头
  • 毕业生对于网站建设感受wordpress 被入侵 删文章
  • 网页设计模板免费网站酒类销售公司的网站建设