说在前面: 本文主要介绍如何抓取 页面加载后须要经过JS加载的数据和图片html
本文是经过python中的selenium(pyhton包) + chrome(谷歌浏览器) + chromedrive(谷歌浏览器驱动)python
chrome 和chromdrive建议都下最新版本(参考地址:https://blog.csdn.net/yoyocat915/article/details/80580066)web
一样支持无头模式(不须要打开浏览器)正则表达式
直接上代码:site_url:须要爬取的地址,CHROME_DRIVER_PATH:chromedrive存放地址chrome
1 def get_dynamic_html(site_url): 2 print('开始加载',site_url,'动态页面') 3 chrome_options = webdriver.ChromeOptions() 4 #ban sandbox 5 chrome_options.add_argument('--no-sandbox') 6 chrome_options.add_argument('--disable-dev-shm-usage') 7 #use headless,无头模式 8 chrome_options.add_argument('--headless') 9 chrome_options.add_argument('--disable-gpu') 10 chrome_options.add_argument('--ignore-ssl-errors') 11 driver = webdriver.Chrome(executable_path=CHROME_DRIVER_PATH,chrome_options=chrome_options) 12 #print('dynamic laod web is', site_url) 13 driver.set_page_load_timeout(100) 14 #driver.set_script_timeout(100) 15 try: 16 driver.get(site_url) 17 except Exception as e: 18 #driver.execute_script('window.stop()') # 超出时间则不加载 19 print(e, 'dynamic web load timeout') 20 data = driver.page_source 21 soup = BeautifulSoup(data, 'html.parser') 22 try: 23 driver.quit() 24 except: 25 pass 26 return soup
返回的一个soup,这样能够对这个soup进行搜索节点,使用select,search,find等方法找到你想要的节点或者数据浏览器
一样若是你想变成文本下载下来,则 less
1 try: 2 with open(xxx.html, 'w+', encoding="utf-8") as f: 3 #print ('html content is:',content) 4 f.write(get_dynamic_html('https://xxx.com').prettify()) 5 f.close() 6 except Exception as e: 7 print(e)
下面详细说一下,beautifusoup的搜索ui
首先如何定位到一个标签url
1.使用 find (这位博主详细介绍了https://www.jb51.net/article/109782.htm)spa