欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  一、request请求库爬取豆瓣电影信息
 
  -请求url
 
  https://movie.douban.com/top250
 
  -请求方式
 
  GET
 
  -请求头
 
  user-agent
 
  cookies
 
  '''
 
  爬取豆瓣电影相关信息
 
  电影名称、电影url、电影导演、电影主演、电影年份、
 
  电影类型、电影评分、电影评论、电影简介、电影排名
 
  分析每页的url
 
  第一页
 
  https://movie.douban.com/top250?start=0&filter=
 
  第二页
 
  https://movie.douban.com/top250?start=25&filter=
 
  '''
 
  #爬虫三部曲
 
  #1.发送请求
 
  importrequests
 
  defget_page(url):
 
  reponse=requests.get(url)
 
  #print(reponse.text)
 
  returnreponse
 
  #2.解析数据
 
  importre
 
  defparse_index(html):
 
  movie_list=re.findall('<divclass="item">.*?<emclass="">(.*?)</em>.*?<ahref="(.*?)">.*?<spanclass="title">(.*?)</span>.*?<pclass="">.*?导演:(.*?)主演:(.*?)<br>(.*?)</p>.*?<spanclass="rating_num"property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>.*?<spanclass="inq">(.*?)</span>',html,re.S)
 
  returnmovie_list
 
  '''
 
  电影排名、电影url、电影名称、电影导演、电影主演、电影年份/电影类型、电影评分、电影评论、电影简介
 
  <divclass="item">.*?<emclass="">(.*?)</em>.*?<ahref="(.*?)">.*?<spanclass="title">(.*?)</span>.*?<pclass="">.*?导演:(.*?)主演:(.*?)<br>(.*?)</p>.*?<spanclass="rating_num"property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>.*?<spanclass="inq">(.*?)</span>
 
  '''
 
  #3.保存数据
 
  defsave_data(movie):
 
  #电影排名、电影url、电影名称、电影导演、电影主演、电影年份/电影类型、电影评分、电影评论、电影简介
 
  top,m_url,name,daoyan,actor,year_type,point,commit,desc=movie
 
  daoyan=daoyan.replace("&nbsp;","")
 
  year_type=year_type.replace("&nbsp;/&nbsp;","")
 
  data=f'''
 
  =======欢迎观赏=======
 
  电影排名:{top}
 
  电影url:{m_url}
 
  电影名称:{name}
 
  电影导演:{daoyan}
 
  电影主演:{actor}
 
  年份类型:{year_type}
 
  电影评分:{point}
 
  电影评论:{commit}
 
  电影简介:{desc}
 
  =======谢谢观赏=======
 
  \n
 
  \n
 
  '''
 
  print(data)
 
  withopen('doban_top250.txt','a',encoding='utf-8')asf:
 
  f.write(data)
 
  print(f'电影:{name}写入成功')
 
  if__name__=='__main__':
 
  #拼接所有主页
 
  num=0
 
  forlineinrange(10):
 
  url=f'https://movie.douban.com/top250?start={num}&filter='
 
  num+=25
 
  print(url)
 
  #1.往每个主页发送请求
 
  index_res=get_page(url)
 
  #2.解析主页获取电影信息
 
  movie_list=parse_index(index_res.text)
 
  formovieinmovie_list:
 
  #3.保存数据
 
  save_data(movie)
 
  二selenium请求库
 
  1、什么是selenium?
 
  期初是一个自动化测试工具,原理是驱动
 
  浏览器执行一些一定好的操作。爬虫本质
 
  上就是模拟浏览器,所以可以使用它来做爬虫。
 
  2、为什么要使用selenium?
 
  优点:
 
  -执行js代码
 
  -不需要分析复杂的通信流程
 
  -对浏览器做弹窗、下拉等操作
 
  -*****获取动态数据
 
  -***破解登录验证
 
  缺点:
 
  -执行效率低
 
  3、安装与使用
 
  1.安装selenium请求库:
 
  pip3installselenium
 
  2.必须安装浏览器
 
  "谷歌"或者火狐
 
  3.安装浏览器驱动
 
  http://npm.taobao.org/mirrors/chromedriver/2.38/
 
  windows:
 
  下载win32驱动
 
  selenium基本使用,实例如下:
 
  fromseleniumimportwebdriver#web驱动
 
  fromselenium.webdriver.common.byimportBy#按照什么方式查找,By.ID,By.CSS_SELECTOR
 
  fromselenium.webdriver.common.keysimportKeys#键盘按键操作
 
  fromselenium.webdriver.supportimportexpected_conditionsasEC#和下面WebDriverWait一起用的
 
  fromselenium.webdriver.support.waitimportWebDriverWait#等待页面加载某些元素
 
  importtime
 
  importtime
 
  #方式一:通过驱动打开浏览器
 
  #driver=webdriver.Chrome(r'驱动的绝对路径/webdriver.exe')
 
  #方式二:把webdriver.exe驱动放到python解释器安装目录/Scripts文件夹中
 
  #python解释器安装目录/Scripts配置环境变量
 
  #python解释器安装目录配置环境变量
 
  driver=webdriver.Chrome()
 
  try:
 
  driver.get('https://www.jd.com/')
 
  #获取显式等待对象10秒
 
  #可以等待某个标签加载10秒
 
  wait=WebDriverWait(driver,10)
 
  #查找元素id为key
 
  input_tag=wait.until(EC.presence_of_element_located(
 
  (By.ID,'key')
 
  ))
 
  time.sleep(5)
 
  #在输入框内输入商品名称
 
  input_tag.send_keys('公仔')
 
  #按下键盘回车键
 
  input_tag.send_keys(Keys.ENTER)
 
  time.sleep(20)
 
  finally:
 
  #关闭浏览器释放操作系统资源
 
  driver.close()
 
  selenium选择器,实例如下:
 
  ''''''
 
  fromseleniumimportwebdriver#web驱动
 
  fromselenium.webdriver.common.keysimportKeys#键盘按键操作
 
  importtime
 
  importtime
 
  driver=webdriver.Chrome()
 
  try:
 
  #隐式等待:需要在get之前调用
 
  #等待任意元素加载10秒
 
  driver.implicitly_wait(10)
 
  driver.get('https://www.baidu.com/')
 
  #显式等待:需要在get之后调用
 
  time.sleep(5)
 
  '''
 
  ===============所有方法===================
 
  element是查找一个标签
 
  elements是查找所有标签
 
  '''
 
  #自动登录百度start
 
  #1、find_element_by_link_text#通过链接文本去找
 
  login_link=driver.find_element_by_link_text('登录')
 
  login_link.click()#点击登录
 
  time.sleep(1)
 
  #2、find_element_by_id#通过id去找
 
  user_login=driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn')
 
  user_login.click()
 
  time.sleep(1)
 
  #3、find_element_by_class_name
 
  user=driver.find_element_by_class_name('pass-text-input-userName')
 
  user.send_keys('*****')
 
  #4、find_element_by_name
 
  pwd=driver.find_element_by_name('password')
 
  pwd.send_keys('*****')
 
  submit=driver.find_element_by_id('TANGRAM__PSP_10__submit')
 
  submit.click()
 
  #end
 
  #5、find_element_by_partial_link_text
 
  #局部链接文本查找
 
  login_link=driver.find_element_by_partial_link_text('登')
 
  login_link.click()
 
  #6、find_element_by_css_selector
 
  #根据属性选择器查找元素
 
  #.:class
 
  ##:id
 
  login2_link=driver.find_element_by_css_selector('.tang-pass-footerBarULogin')
 
  login2_link.click()
 
  #7、find_element_by_tag_name
 
  div=driver.find_elements_by_tag_name('div')
 
  print(div)
 
  time.sleep(20)
 
  finally:
 
  #关闭浏览器释放操作系统资源
 
  driver.close()

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h54669.shtml