day02 request请求库应用以及selenium请求库
2019-07-24 09:10:23来源:博客园 阅读 ()
一、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.发送请求 import requests def get_page(url): reponse = requests.get(url) #print(reponse.text) return reponse # 2.解析数据 import re def parse_index(html): movie_list = re.findall('<div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<p class="">.*?导演: (.*?)主演: (.*?)<br>(.*?)</p>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>.*?<span class="inq">(.*?)</span>',html,re.S) return movie_list ''' 电影排名、电影url、电影名称、电影导演、电影主演、电影年份/电影类型、电影评分、电影评论、电影简介 <div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<p class="">.*?导演: (.*?)主演: (.*?)<br>(.*?)</p>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>.*?<span class="inq">(.*?)</span> ''' # 3.保存数据 def save_data(movie): #电影排名、电影url、电影名称、电影导演、电影主演、电影年份 / 电影类型、电影评分、电影评论、电影简介 top,m_url,name,daoyan,actor,year_type,point,commit,desc = movie daoyan = daoyan.replace(" ","") year_type = year_type.replace(" / "," ") data = f''' =======欢迎观赏======= 电影排名:{top} 电影url:{m_url} 电影名称:{name} 电影导演:{daoyan} 电影主演:{actor} 年份类型:{year_type} 电影评分:{point} 电影评论:{commit} 电影简介:{desc} =======谢谢观赏======= \n \n ''' print(data) with open('doban_top250.txt','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: #3.保存数据 save_data(movie)
二 selenium请求库
1、什么是selenium?
期初是一个自动化测试工具,原理是驱动
浏览器执行一些一定好的操作。爬虫本质
上就是模拟浏览器,所以可以使用它来做爬虫。
2、为什么要使用selenium?
优点:
- 执行js代码
- 不需要分析复杂的通信流程
- 对浏览器做弹窗、下拉等操作
- ***** 获取动态数据
- *** 破解登录验证
缺点:
- 执行效率低
3、安装与使用
1. 安装selenium请求库:
pip3 install selenium
2. 必须安装浏览器
"谷歌"或者火狐
3.安装浏览器驱动
http://npm.taobao.org/mirrors/chromedriver/2.38/
windows:
下载win32驱动
selenium基本使用,实例如下:
from selenium import webdriver # web驱动 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 import time # 方式一: 通过驱动打开浏览器 # 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选择器,实例如下:
'''''' from selenium import webdriver # web驱动 from selenium.webdriver.common.keys import Keys # 键盘按键操作 import time import time 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()
原文链接:https://www.cnblogs.com/my-star/p/11118738.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python day1-requests 2019-08-13
- Flask request接口获取参数 2019-08-13
- python爬虫常用库 2019-08-13
- CSRF verification failed. Request aborted. 2019-07-24
- HTTP: Request中的post和get区别 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash