Python案例:schedule+selenium爬取豆瓣电影
来自CloudWiki
爬取百度
import schedule import time from selenium import webdriver from selenium.webdriver.common.keys import Keys from webdriver_manager.chrome import ChromeDriverManager def get_baidu(key_word): browser = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") browser.get(r'https://www.baidu.com') search = browser.find_element_by_id('kw') search.send_keys(key_word) search.send_keys(Keys.ENTER) schedule.every(1).minutes.do(get_baidu,"济南") # 每隔十分钟执行一次任务 while True: schedule.run_pending() # run_pending:运行所有可以运行的任务
爬取豆瓣
import schedule import time from selenium import webdriver from selenium.webdriver.common.keys import Keys from webdriver_manager.chrome import ChromeDriverManager def get_baidu(key_word): browser = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") browser.get(r'https://www.baidu.com') search = browser.find_element_by_id('kw') search.send_keys(key_word) search.send_keys(Keys.ENTER) # 关闭浏览器 #browser.close() def get_movies(): driver = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") for page in range(0,3): #这里只爬了前3个页面,要怕爬10个的话把3改成10就可以了 url = 'https://movie.douban.com/top250?start='+str(page*25) driver.get(url) conts = driver.find_elements_by_xpath('//div[@class="item"]') #conts包含了一个页面中25电影的信息(len(conts)=25) for i in range(2): #这里只爬取了每个页面的前两部电影,要爬该页面的所有电影,把2改成25就可以 rank=conts[i].find_element_by_tag_name('em').text print(rank) #拿到排名 movie_name = conts[i].find_element_by_class_name('title').text print(movie_name) #拿到电影名字 score = conts[i].find_element_by_xpath('.//div[@class="star"]/span[2]').text print(score) #拿到评分 judge_counts = conts[i].find_element_by_xpath('.//div[@class="star"]/span[4]').text[:-3] print(judge_counts) #拿到参评人数 link = conts[i].find_element_by_xpath('.//div[1]/a').get_attribute('href') print(link) #拿到电影链接 inq = conts[i].find_element_by_class_name('inq').text print(inq) #拿到一句话简介 crew = conts[i].find_element_by_xpath('.//div[@class="bd"]/p[1]').text.split('...')[0] #拿到演职员信息 more_info = conts[i].find_element_by_xpath('.//div[@class="bd"]/p[1]').text.split('...')[-1].strip() #拿到影片的其他相关信息 print(crew) print(more_info) print('*'*20) driver.close() #这里一定要关闭 schedule.every(3).minutes.do(get_movies) # 每隔十分钟执行一次任务 while True: schedule.run_pending() # run_pending:运行所有可以运行的任务