一、requests爬取豆瓣电影信息
-请求url:
https://movie.douban.com/top250
-请求方式:
get
-请求头:
user-agent
cookies
二、selenium请求库
1、什么是selenium?
起初是一个自动化测试工具,原理是驱动浏览器执行一些一定好操作的操作。
爬虫本质是上就是模拟浏览器,所以可以使用它来做爬虫。
2、为什么要用selenium?
优点:
-执行js代码
-不需要分析复杂的通信流程
-可以对浏览器做弹窗,下拉等动作
-***** 可以获取动态数据
-*** 破解登录验证
缺点:
-执行效率低
3、安装与使用
1、安装selenium请求库:
pip3 install selenium
2、必须安装浏览器
谷歌或者火狐
3、安装浏览器驱动
http://npm.taobao.org/mirrors/chromedriver/2.38/
windows:
下载win32驱动
''' 爬取豆瓣TOP205电影信息: 电影名称 电影url 电影导演 电影主演 电影年份 电影类型 电影评分 电影评论 电影简介 1、分析所有主页的url: 第一页: https://movie.douban.com/top250 第二页: https://movie.douban.com/top250?start=25&filter= 第三页: https://movie.douban.com/top250?start=50&filter= ''' import requests import re # 爬虫三部曲 # 1.发送请求 def get_page(url): respones = requests.get(url) # print(respones.text) return respones # 2. 解析数据 ''' 电影排名、、、 <div class="item">.*?<em class="">(>*?)</em>.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?导演: (.*?)主演: (.*?)<br>(.*?)2</p>.*?<span class="rating_num" .*?">(.*?)</span>.*?<span>(.*?)人评价</span>.*?<span class="inq">(.*?)</span> ''' def parse_index(html): movie_list = re.findall('<div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?导演: (.*?)主演: (.*?)<br>(.*?)</p>.*?<span class="rating_num" .*?>(.*?)</span>.*?<span>(.*?)人评价</span>.*?<span class="inq">(.*?)</span>', html, re.S) return movie_list # 3. 保存数据 def save_data(movie): top, m_url, name, daoyan, actor, year_type, point, commit, desc = movie year_type = year_type.strip('\n') data = f''' ====== 欢迎尊敬官人观赏======= 电影排名:{top} 电影url:{m_url} 电影名称:{name} 导演导演:{daoyan} 电影主演:{actor} 年份类型:{year_type} 电影评分:{point} 电影评论:{commit} 电影简介:{desc} =======恭送官人====== \n ''' print(data) with open('douban_top250.text', 'a', encoding='utf-8') as f: f.write(data) print(f'电影:{name} 写入成功,,,') if __name__ == '__main__': num=0 for line in range(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) for movie in movie_list : print(movie) #3.保存数据 save_data(movie)
selenium请求库的使用:
from selenium import webdriver # web驱动 from selenium.webdriver import ActionChains # 破解滑动验证码的时候用的 可以拖动图片 from selenium.webdriver.common.by import By # 按照什么方式查找,By.ID,By.CSS_SELECTOR from selenium.webdriver.common.keys import Keys # 键盘按键操作 from selenium.webdriver.support import expected_conditions as EC # 和下面WebDriverWait一起用的 from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素 import time # 方式一:通过驱动打开浏览器 driver = webdriver.Chrome(r'E:\phyon\driver\chromedriver.exe') # 方式二:把webdriver.exe驱动放到 python解释器安装目录/Scripts文件夹中 # python解释器安装到目录Scripts配置环境变量 # python解释器安装到目录,配置环境变量 driver = webdriver.Chrome() try: driver.get('https://www.jd.com/') wait = WebDriverWait(driver, 10) 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(15) finally: driver.close()