Python爬虫(Day02)

今日内容:
    一 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.下载chromed浏览器驱动:
                http://npm.taobao.org/mirrors/chromedriver/2.38/

 

例1:爬取豆瓣前250电影信息

Python爬虫(Day02)_第1张图片

'''
爬取豆瓣电影信息:
    电影排名、电影名称、电影url、电影导演
    电影主演、电影年份、电影类型、电影评分
    电影评论、电影简介
    
1、分析所有主页的url
第一页:
https://movie.douban.com/top250?start=0&filter=
第二页
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):
    response = requests.get(url)
    # print(response.text)
    return response

# 2、解析数据
def parse_index(html):
    ''''''
    '''
    电影排名、电影url、电影名称、电影导演、电影主演
    电影年份/电影类型、电影评分、电影评论、电影简介
    

 

例2:京东自动搜索商品

from selenium import webdriver  # 用来驱动浏览器的
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'C:\Users\Enz\Desktop\chromedriver.exe')

# 方式二:把webdriver.exe驱动放到Python解释器安装目录/Scripts文件夹中
# python解释器安装目录/Scripts配置环境变量
# python解释器安装目录 配置环境变量
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()

例3:百度自动登录

''''''
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()



 

你可能感兴趣的:(Python爬虫(Day02))