1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > chrome frame节点 取_爬虫3-下(利用Selenium + Chrome Driver模拟用户操作浏览器)

chrome frame节点 取_爬虫3-下(利用Selenium + Chrome Driver模拟用户操作浏览器)

时间:2020-08-22 17:22:21

相关推荐

chrome frame节点 取_爬虫3-下(利用Selenium + Chrome Driver模拟用户操作浏览器)

一、前言

前面利用request的方法爬取页面数据的操作,今天用另外一种方法:利用Selenium + Chrome Driver模拟用户操作浏览器,来爬取数据。

在此之前需要做一些准备工作:安装selenium库、下载谷歌浏览器、下载与谷歌浏览器版本相对应的Chrome Drive(参考chromedriver与chrome版本映射表),然后将下载好的Chrome Drive(chromedriver.exe)放入anaconda的scripts文件中。Selenium的安装:pip install selenium

3. chromedriver.exe文件移动到此pythpn的anaconda文件夹下的scripts文件夹中,路径(C:\ProgramData\Anaconda3\Scripts)

对于第3步,如果忘记anaconda的安装位置了,可以使用下面语句查看python的安装路径

import os

os.environ

二、模拟浏览器操作

1、导入库

from selenium import webdriver

from mon.by import By

from mon.keys import Keys

2、创建浏览器对象, 同时打开浏览器

browser = webdriver.Chrome() #如果打开这行浏览器就说明驱动成功了

browser.get('')不要手动点击浏览器的任何操作

browser.find_element_by_link_text("新闻").click()

browser.find_element_by_class_name('a3').click()

browser.back()

browser.forward()

kw = browser.find_element_by_id('kw')

kw.send_keys("显卡")

kw.send_keys(Keys.ENTER)

browser.find_element_by_link_text('显卡吧_百度贴吧').click()

# 窗口切换

# 获取当前所有打开窗口的句柄

browser.window_handles

# 切换窗口

browser.switch_to_window(browser.window_handles[1])

#滚动窗口

window.scrollTo(0, document.body.scrollHeight)

#关闭浏览器

browser.close()

3、获取单个节点的方法

三、使用模拟浏览器爬取豆瓣电影短评数据

第1步:导入库,进入网页

from selenium import webdriver

from mon.by import By

from mon.keys import Keys

from selenium.webdriver.chrome.options import Options

import time

import pandas as pd

login_page_url = '/passport/login?source=movie'

browser.get(login_page_url)

第2步:填入账号和密码,进行登入

browser.find_element_by_class_name('account-tab-account').click() #选择密码登入

username = browser.find_element_by_id('username') #输入账号

username.send_keys('17611313631')

password = browser.find_element_by_id('password') #输入密码

password.send_keys("a123456789")

browser.find_element_by_class_name('btn-account').click() #点击登入密码登入遇到滑动滑块的,手动滑过去就可以登入后

第3步:获取短评

empty = pd.DataFrame(columns=['短评'])

for page in range(25):

url = '/subject/{}/comments?start={}&limit=20&sort=new_score&status=P'.format(3878007, page*20)

browser.get(url)

short = browser.find_elements_by_class_name('short')

s = [i.text for i in short]

data = pd.DataFrame(s,columns=['短评'] )

empty = empty.append(data, ignore_index=True)

time.sleep(1)

四、封装成函数

1、登入函数(try error)

def login_in_douban(账号, 密码):

login_page_url = '登录豆瓣'

try:

browser.get(login_page_url)

browser.find_element_by_class_name('account-tab-account').click()

username = browser.find_element_by_id('username')

username.send_keys(账号)

password = browser.find_element_by_id('password')

password.send_keys(密码)

browser.find_element_by_class_name('btn-account').click()

except Exception as e:

print('登录错误:', e)

2、爬取网页函数

def crawl_the_page(movie_id, pages):

empty = pd.DataFrame(columns=['短评'])

for page in range(pages):

url = '/subject/{}/comments?start={}&limit=20&sort=new_score&status=P'.format(movie_id, page*20)

browser.get(url)

short = browser.find_elements_by_class_name('short')

s = [i.text for i in short]

data = pd.DataFrame(s,columns=['短评'] )

empty = empty.append(data, ignore_index=True)

time.sleep(0.5)

return empty

五、爬虫进阶

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。