本文共 11454 字,大约阅读时间需要 38 分钟。
#声明浏览器对象import osos.chdir(r'D:\数分学习资料\python\爬虫') from selenium import webdriverbrowser=webdriver.Chrome()#会打开浏览器browser.maximize_window()
#打开网页,进入百度import timeimport osos.chdir(r'D:\数分学习资料\python\爬虫')from selenium import webdriverbrowser=webdriver.Chrome()#会打开浏览器browser.get('https://www.baidu.com/')browser.maximize_window()print(browser.page_source)#输出网页源码time.sleep(5)browser.close()#关闭浏览器
import timeimport osos.chdir(r'D:\数分学习资料\python\爬虫')from selenium import webdriverbrowser=webdriver.Chrome()#会打开浏览器browser.get('https://www.jd.com/?cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=0f3d30c8dba7459bb52f2eb5eba8ac7d_0_48e850d4018f41318337c62af7d885ba')input=browser.find_element_by_id('key')#input.send_keys('手机')browser.find_element_by_class_name('button').click()#回车time.sleep(10)browser.close()#关闭浏览器#input=browser.find_element_by_name("q")#根据name#input_second=browser.find_element_by_css_selector("#q")#根据css获取,点:类名,#:id名#input_third=browser.find_element(By.ID,"q")#根据id获取
#获取元素信息,获取属性from selenium import webdriverbrowser=webdriver.Chrome()url="https://www.zhihu.com/explore"browser.get(url)logo=browser.find_element_by_id("zh-top-link-logo")print(logo)print(logo.get_attribute("class"))print(logo.text)print(logo.id) #idprint(logo.location) #位置print(logo.tag_name) #标签名print(logo.size) #大小
#元素的交互import timeimport osos.chdir(r'D:\数分学习资料\python\爬虫')from selenium import webdriverbrowser=webdriver.Chrome()#会打开浏览器browser.get('https://www.jd.com/?cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=0f3d30c8dba7459bb52f2eb5eba8ac7d_0_48e850d4018f41318337c62af7d885ba')input=browser.find_element_by_id('key')#input.send_keys('连衣裙')input.clear()#清空input.send_keys('手机')browser.find_element_by_class_name('button').click()#回车time.sleep(10)browser.close()#关闭浏览器
#下拉进度条import timeimport osos.chdir(r'D:\数分学习资料\python\爬虫')from selenium import webdriverbrowser=webdriver.Chrome()#会打开浏览器browser.get('https://www.jd.com/?cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=0f3d30c8dba7459bb52f2eb5eba8ac7d_0_48e850d4018f41318337c62af7d885ba')input=browser.find_element_by_id('key')#input.send_keys('连衣裙')time.sleep(2)input.clear()input.send_keys('手机')browser.find_element_by_class_name('button').click()#回车browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')time.sleep(2)browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')time.sleep(2)browser.execute_script('window.scrollTo(0,0)')browser.close()#关闭浏览器
##动作链from selenium import webdriverfrom selenium.webdriver import ActionChainsimport timefrom selenium.webdriver.common.alert import Alertbrowser=webdriver.Chrome()url="http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"browser.get(url) browser.switch_to.frame("iframeResult")#切换到目标元素所在的framesource=browser.find_element_by_id("draggable")#确定拖拽目标的起点target=browser.find_element_by_id("droppable")#确定拖拽目标的终点actions=ActionChains(browser) #形成动作链actions.drag_and_drop(source,target)#调用drag and drop方法actions.perform()#执行
#等待#隐式等待from selenium import webdriverbrowser = webdriver.Chrome()browser.get('https://www.zhihu.com/explore')browser.implicitly_wait(3)#等待固定时间input = browser.find_element_by_class_name('zu-button-more')print(input)#显式等待from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECbrowser = webdriver.Chrome()browser.get('https://www.taobao.com/')wait = WebDriverWait(browser,10)#最多等待十秒input = wait.until(EC.presence_of_element_located((By.ID, 'q')))button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-search')))print(input, button)
#浏览器的前进,后退,刷新from selenium import webdriverimport timebrowser=webdriver.Chrome()browser.get("https://www.taobao.com")time.sleep(2)browser.get("https://www.baidu.com")browser.back()#后退time.sleep(2)browser.forward()#前进time.sleep(3)browser.refresh()#刷新time.sleep(3)browser.close()
#选项卡管理from selenium import webdriverimport timebrowser=webdriver.Chrome()browser.get("https://www.zhihu.com/explore")browser.execute_script("window.open()")print(browser.window_handles)browser.switch_to_window(browser.window_handles[1])browser.get("https://www.taobao.com")time.sleep(1)browser.switch_to_window(browser.window_handles[0])browser.get("https://www.jd.com")browser.close() # 关选项卡0time.sleep(1)browser.switch_to_window(browser.window_handles[0])browser.close()
#异常处理from selenium import webdriverfrom selenium.common.exceptions import TimeoutException,NoSuchElementExceptionbrowser=webdriver.Chrome()try: browser.get("https://www.zhihu.com/explore")except TimeoutException: print("Time out")try: browser.find_element_by_id("hello")except NoSuchElementException: print("No Element")finally: browser.close()
#常用键的操作from selenium.webdriver.common.keys import Keysimport timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")time.sleep(3)driver.find_element_by_id('kw').send_keys('selenium') #在搜索框中输入"selenium"time.sleep(3)driver.find_element_by_id('kw').send_keys(Keys.SPACE) #输入空格键time.sleep(3)driver.find_element_by_id('kw').send_keys('python') #在搜索框中输入"python"time.sleep(3)driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a') #输入Control+a模拟全选time.sleep(3)driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'c') #输入Control+c模拟复制time.sleep(3)driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'v') #输入Control+v模拟粘贴time.sleep(3)driver.find_element_by_id('kw').send_keys(Keys.ENTER) #输入回车代替点击搜索按钮time.sleep(3)driver.close()#下面是一些常用的键盘事件:# Keys.BACK_SPACE:回退键(BackSpace)# Keys.TAB:制表键(Tab)# Keys.ENTER:回车键(Enter)# Keys.SHIFT:大小写转换键(Shift)# Keys.CONTROL:Control键(Ctrl)# Keys.ALT:ALT键(Alt)# Keys.ESCAPE:返回键(Esc)# Keys.SPACE:空格键(Space)# Keys.PAGE_UP:翻页键上(Page Up)# Keys.PAGE_DOWN:翻页键下(Page Down)# Keys.END:行尾键(End)# Keys.HOME:行首键(Home)# Keys.LEFT:方向键左(Left)# Keys.UP:方向键上(Up)# Keys.RIGHT:方向键右(Right)# Keys.DOWN:方向键下(Down)# Keys.INSERT:插入键(Insert)# DELETE:删除键(Delete)# NUMPAD0 ~ NUMPAD9:数字键1-9# F1 ~ F12:F1 - F12键# (Keys.CONTROL, ‘a’):组合键Control+a,全选# (Keys.CONTROL, ‘c’):组合键Control+c,复制# (Keys.CONTROL, ‘x’):组合键Control+x,剪切# (Keys.CONTROL, ‘v’):组合键Control+v,粘贴
browser=webdriver.Chrome()url='https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F%3Fcu%3Dtrue%26utm_source%3Dbaidu-pinzhuan%26utm_medium%3Dcpc%26utm_campaign%3Dt_288551095_baidupinzhuan%26utm_term%3D0f3d30c8dba7459bb52f2eb5eba8ac7d_0_5c595fde6f6743c1a1878bfeaf4f215f'browser.get(url)time.sleep(3)button=browser.find_element_by_link_text('账户登录').click()browser.find_element_by_id('loginname').send_keys('')#自己的用户名time.sleep(2)browser.find_element_by_id("nloginpwd").send_keys('')#密码time.sleep(2)browser.find_element_by_id('loginsubmit').click()#登录
#完整代码,爬取一页from bs4 import BeautifulSoupbrowser=webdriver.Chrome()url='https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&wq=%E6%89%8B%E6%9C%BA&pvid=7006616bd0b543cd86d45af18335c009'browser.get(url)browser.maximize_window()input=browser.find_element_by_id('key')#input.clear()input.send_keys('手机')browser.find_element_by_class_name('button').click()#回车browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')time.sleep(5)browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')time.sleep(10)html=browser.page_sourcesoup = BeautifulSoup(html, 'html.parser')#内置的标准库进行网页的解析itemslist=[]items=soup.find_all('li',class_='gl-item')for item in items: it=[] it.append(item.find('div',class_='p-name p-name-type-2').find('em').text) it.append(item.find('div',class_='p-price').find('i').text) it.append(item.find('span',class_='J_im_icon').text) itemslist.append(it)df=pd.DataFrame(itemslist,columns=['商品名称','价格','店家']).set_index('商品名称')df
import pandas as pdfrom bs4 import BeautifulSoupbrowser=webdriver.Chrome()url='https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&wq=%E6%89%8B%E6%9C%BA&pvid=7006616bd0b543cd86d45af18335c009'browser.get(url)browser.maximize_window()input=browser.find_element_by_id('key')#input.clear()input.send_keys('手机')browser.find_element_by_class_name('button').click()#回车data=pd.DataFrame()for i in range(5): print('正在爬取第%d页'%i) browser.execute_script('window.scrollTo(0,document.body.scrollHeight)') time.sleep(5) browser.execute_script('window.scrollTo(0,document.body.scrollHeight)') time.sleep(5) html=browser.page_source soup = BeautifulSoup(html, 'html.parser')#内置的标准库进行网页的解析 itemslist=[] items=soup.find_all('li',class_='gl-item') for item in items: it=[] it.append(item.find('div',class_='p-name p-name-type-2').find('em').text)#商品名称 it.append(item.find('div',class_='p-price').find('i').text)#价格 if item.find('span',class_='J_im_icon')==None: #店家名称 it.append('京东自营') else: it.append(item.find('span',class_='J_im_icon').text) itemslist.append(it) df=pd.DataFrame(itemslist) data=pd.concat([data,df]) browser.execute_script('window.scrollTo(0,10000)') time.sleep(5) browser.find_element_by_class_name('pn-next').click() time.sleep(5)data.columns=['商品名称','价格','店家']data=data.set_index('商品名称')
from selenium import webdriverimport osos.chdir(r'D:\数分学习资料\python\爬虫')import pandas as pdimport timefrom bs4 import BeautifulSoupchrome_options = webdriver.ChromeOptions()chrome_options.add_argument('--headless')#无界面browser = webdriver.Chrome(chrome_options=chrome_options)url='https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&wq=%E6%89%8B%E6%9C%BA&pvid=7006616bd0b543cd86d45af18335c009'browser.get(url)input=browser.find_element_by_id('key')#input.clear()input.send_keys('手机')browser.find_element_by_class_name('button').click()#回车data=pd.DataFrame()for i in range(5): print('正在爬取第%d页'%i) browser.execute_script('window.scrollTo(0,document.body.scrollHeight)') time.sleep(5) browser.execute_script('window.scrollTo(0,document.body.scrollHeight)') time.sleep(10) html=browser.page_source soup = BeautifulSoup(html, 'html.parser')#内置的标准库进行网页的解析 itemslist=[] items=soup.find_all('li',class_='gl-item') for item in items: it=[] it.append(item.find('div',class_='p-name p-name-type-2').find('em').text)#商品名称 it.append(item.find('div',class_='p-price').find('i').text)#价格 if item.find('span',class_='J_im_icon')==None: #店家名称 it.append('京东自营') else: it.append(item.find('span',class_='J_im_icon').text) itemslist.append(it) df=pd.DataFrame(itemslist) data=pd.concat([data,df]) browser.execute_script('window.scrollTo(0,10000)') time.sleep(5) browser.find_element_by_class_name('pn-next').click() time.sleep(5)print('爬取完毕')data.columns=['商品名称','价格','店家']data=data.set_index('商品名称')
# 股票数据import tushare as tsdf=ts.get_hist_data('600848')df# 股票数据 设置时间段import tushare as tsts.get_hist_data('600848',start='2017-01-05',end='2017-02-09')#新闻数据ts.get_latest_news(top=5,show_content=True) #显示最新5条新闻,并打印出新闻内容#电影票房df = ts.realtime_boxoffice()df
转载地址:http://ixqbb.baihongyu.com/