吾爱破解论坛有你更精彩! LQ789 + 1 + 1 谢谢@Thanks! laonanhai0812 + 1 谢谢@T

element) print(title_url, title_date, '.article-wrap', 去年八月份写的 也没做什么处理 注!!! 本人发这个网站提供参考,吾爱破解论坛有你更精彩! 查看全部评分 , title_obj) # 由于网站的时间 千奇百怪 有的在td 有的在p 有的在div所有还是不要写死了 date_obj = await li.querySelector(website.title_date_query) title_date = await page.evaluate('(element) = element.textContent', }) # 新开一个page对象 page = await browser.newPage() # 拿到一个尺寸 作为你的谷歌浏览器大小 width,吾爱破解论坛有你更精彩! LQ789 + 1 + 1 谢谢@Thanks! laonanhai0812 + 1 谢谢@Thanks! blindcat + 1 + 1 欢迎分析讨论交流, 'next_page_query']) websites = [ ( 'http://www.cqzbtb.cn/_jiaoyixinxi/', 示例网站 也不要一直爬取。

len(content_html)) await detail_page.close() except Exception as e: print(e) print(f"第{now_page}页访问") # 点击下一页 next_page_link = website.next_page_query if next_page_link: await page.click(next_page_link) else: raise Exception("already Crawl complete Exit coming soon....") await asyncio.sleep(2) # return item_listasync def page_close(browser): for _page in await browser.pages(): await _page.close() await browser.close()if __name__ == '__main__': Websites = namedtuple('websites', '.ys',会给别人带来困扰, title_name, # -*- coding: utf-8 -*-# @Time : 2022/8/19 13:17# @AuThor: lzc# @Email : hybpjx@163.com# @file : __init__.py# @Software: PyCharmimport asynciofrom pyppeteer import launchfrom collections import namedtupledef screen_size(): """使用tkinter获取屏幕大小""" # 导入gui编程的模块 import tkinter # 创建一个空间界面 tk = tkinter.Tk() # 获得宽高 width = tk.winfo_screenwidth() height = tk.winfo_screenheight() tk.quit() # 得到返回值 return width, heightasync def main(): # 默认无头浏览器沙盒模式 browser = await launch({'headless': False,或者不需要维护的时候 pyppeteer还是非常好用的。

'title_date_query', date_obj) # 开一个新的对象 detail_page = await browser.newPage() # 访问详情页 await detail_page.goto(url=str(title_url)) # 拿到源码 await detail_page.content() # 拿到 详情页的selector 对象 element = await detail_page.querySelector(website.content_query) # 拿到详情页 content_html = await detail_page.evaluate('(element) = element.outerHTML'。

但是有时候获取个一次性数据, document.body.scrollHeight)') # 优雅的等待1秒 不会造成 资源阻塞 await asyncio.sleep(1) # xpath li_list = await page.querySelectorAll(website.list_query) # 可将返回值返回到列表中 可省略 # item_list = [] for li in li_list: # 防止有些网站 第一条数据获取不到 第二条数据获取的到 故加个try try: # 找寻下面所有的a标签 详情页链接地址 title_obj = await li.querySelector("a ") # 找到 其 链接地址和链接标题 title_url = await page.evaluate('(element) = element.href'。

因为pyppeteer 是puppeteer的python 版本所以不是特别火 网上资料也非常少 .简单记录一下 如果想详细了解 https://zhaoqize.github.io/puppeteer-api-zh_CN/ 去看看官网 这边分析一个可以爬取几乎任何网站的一组python代码 写的比较粗糙, "body section div div.list-wrap.row div.listpa ul li:nth-child(7)" ), ] for i in websites: website = Websites._make(i) a = main() loop = asyncio.get_event_loop() results = loop.run_until_complete(asyncio.gather(a)) 免费评分 参与人数 21 吾爱币 +19 热心值 +17 理由 57711 + 1 + 1 谢谢@Thanks! hubohang + 1 我很赞同! xiugou + 1 热心回复! amurozhang + 1 我很赞同! siryiio + 1 + 1 谢谢@Thanks! xiaojizhang + 1 谢谢@Thanks! kilo2580 + 1 + 1 谢谢@Thanks! buerdaojun + 1 我很赞同! xuming0315 + 1 用心讨论, 'content_query', "height": height}) # 开启js await page.setJavaScriptEnabled(enabled=True) # 设置请求头 await page.setUserAgent( 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML,{ webdriver:{ get: () = false } }) }''') # 访问url await page.goto(website.url) now_page = 0 while True: now_page += 1 # 滑动js动态加载 await page.evaluate('window.scrollBy(0, 突然发现自己之前写过的代码 虽然现在爬虫都逆向了, height = screen_size() # 也可以自定义 await page.setViewport(viewport={"width": width, 'args': ['--no-sandbox'], '.listbox ul', 'list_query', title_obj) title_name = await page.evaluate('(element) = element.textContent'。

['url', like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299' ) # 开启 隐藏 是selenium 让网站检测不到 await page.evaluate('''() ={ Object.defineProperties(navigator,共获提升! menoooooos + 1 + 1 我很赞同! MAOSKE + 1 谢谢@Thanks! 0vers1eep + 1 谢谢@Thanks! lingwushexi + 1 谢谢@Thanks! DAIDI + 1 + 1 谢谢@Thanks! yjn866y + 1 + 1 谢谢@Thanks! XiaoBai.Q.Q + 1 学习下 Bob5230 + 1 谢谢@Thanks! 苏紫方璇 + 7 + 1 欢迎分析讨论交流。

如有其他 不关我事,。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://acg.inmoke.com/zixun/Jk/54238.html