爬取百度搜索python的第一页标题
import sys sys.path.append("/home/user/.local/lib/python3.9/site-packages") #将包的路径添加到环境变量 import asyncio from pyppeteer import launch from pyppeteer_stealth import stealth #反检测模块,隐藏浏览器特征 import randomwidth,height = 1366,768async def main():brower = await launch({"executablePath":"/opt/browser360/browser360-cn"}, #指定已安装的浏览器,headless = False,#无界面模式关闭,显示界面userDataDir = "./userdata", #设置用户目录 userDataDir,可以恢复之前的历史记录,也可以恢复很多网站的登录信息args = ["--disable-infobars",f"--window-size={width},{height}"],#关闭提示”Chrome 正受到自动测试软件的控制”,设定界面大小#devtools = True,#打开调试模式,如果这个参数设置为 True,那么 headless 参数就会无效,会被强制设置为 False )page = await brower.newPage() #打开一个新的标签页await stealth(page) #反检测模块,隐藏特征await page.setViewport({"width":width,"height":height}) #界面大小 await page.goto("https://www.baidu.com/")await page.evaluate("""() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }""") #使用 JavaScript 将它设置为false,规避webdriver检测await page.type('input#kw.s_ipt', "python") #搜索pythonawait asyncio.sleep(random.random() * random.randint(3, 5))await page.click('input#su') # 点击搜索按钮await asyncio.sleep(random.random() * random.randint(3, 5))await page.evaluate('window.scrollBy(0, window.innerHeight)') # 向下滑动滚动条title_element = await page.Jx('//*//h3/a') # 提取搜索结果第一页的标题# 清空input输入框的关键词,防止关键词累加await page.evaluate('document.querySelector("input[id=kw]").value=""')await asyncio.sleep(random.random() * random.randint(3, 5))for element in title_element:print(await (await element.getProperty('textContent')).jsonValue()) #打印所有节点元素文本信息 await asyncio.sleep(10)await brower.close() asyncio.get_event_loop().run_until_complete(main())
第一页标题:
部分搜索页面