day02 requests请求库爬取豆瓣电影信息+selenium请求库
一、 requests請求庫爬取豆瓣電影信息
— 請求url
http://movie.douban.com/top250
— 請求方式
GET
— 請求頭
user-agent
? ?cookies
老樣子,通過谷歌瀏覽器在top250頁面檢查,找到我們要的信息。
通過三步,完成整個過程:
附上完整代碼:
""" 爬取豆瓣電影信息: """""" 第一頁url: https://movie.douban.com/top250?start=0&filter= 第二頁url: https://movie.douban.com/top250?start=25&filter= """ import requests import re# 1 發送請求 def get_page(url):response = requests.get(url)return response# 2 解析數據 def parse_index(html):'''電影排名,電影url,電影名稱,電影導演,電影主演,電影年份/類型,電影評分,電影評論,電影簡介<div class="item">.*?<em class="">(.*?).*?<a href=".*?>.*?<span class="title">(.*?)</span>.*?導演: (.*?) 主演:(.*?)<br>(.*?)</p>.*?<span class="rating_num" .*?>(.*?)</span>.*?<span>(.*?)人評價</span>.*?<span class="inq">(.*?)</span>'''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 = movieyear_type = year_type.strip('\n')data = f'''========== 歡迎尊敬的官人欣賞 ==========電影排名;{top}電影url:{m_url}電影名稱:{name}電影導演:{daoyan}電影主演;{actor}電影類型:{year_type}電影評分:{point}電影評論:{commit}電影簡介:{desc}========== 記得下次再來么么噠 ==========\n\n'''print(data)with open('douban_top250.txt', 'a', encoding='utf-8') as f:f.write(data)print(f'電影{name}寫入成功。。')if __name__ == '__main__':# 拼接所有主頁num = 0for 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)print(movie_list)# 3 保存數據for movie in movie_list: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 timeimport 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為keyinput_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 timeimport timedriver = 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_nameuser = driver.find_element_by_class_name('pass-text-input-userName')user.send_keys('*****')# 4、find_element_by_namepwd = 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# #: idlogin2_link = driver.find_element_by_css_selector('.tang-pass-footerBarULogin')login2_link.click()# 7、find_element_by_tag_namediv = driver.find_elements_by_tag_name('div')print(div)time.sleep(20)finally:# 關閉瀏覽器釋放操作系統資源driver.close()?
轉載于:https://www.cnblogs.com/yjg6/p/11118715.html
總結
以上是生活随笔為你收集整理的day02 requests请求库爬取豆瓣电影信息+selenium请求库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 太平洋入职测评、线上考试
- 下一篇: ONES使用Project一站式项目管理