您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页python 爬虫(selenium requests bs4)

python 爬虫(selenium requests bs4)

来源:伴沃教育

标签: python 爬虫


这里我们用模拟中国亚马逊登录例子

1. python 安装

下载之后,傻瓜式安装,安装步骤中应该是有一个把python加入到环境变量中,如果没有则手动添加(记得把pip放到环境变量中)。

完成之后,打开你的命令行,通过下面命令查看是否安装成功。

python -V

pip -V


2. 第三方库安装

  • requests : Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用
  • selenium : Selenium测试直接运行在浏览器中,就像真正的用户在操作一样
  • beautifulsoup4 : Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库
  • lxml : Python 标准库中自带了 xml 模块,但是性能不够好,而且缺乏一些人性化的 API,相比之下,第三方库 lxml 是用 Cython 实现的,而且增加了很多实用的功能,可谓爬虫处理网页数据的一件利器。

3. 浏览器驱动

浏览器 驱动
chrome chromedriver
firefox geckodriver

注意一个驱动和浏览器的对应关系

网上找比较麻烦,还不一定是最新版。
我建议大家装一个 nodejs, 用node的包管理工具npm来安装驱动。

使用下面命令检查安装是否成功。

node -v
npm -v

因为npm源在国外,我们把它更换成淘宝源。

接下来我们使用cnpm来安装我们的驱动。

cnpm install -g chromedriver geckodriver

-g 是指让这两个包全局安装,相当于加到环境变量当中。


4.模拟登陆实战

# _*_ coding: utf-8 _*_

__author__ = 'lemon'
__date__ = '2018/3/20 17:51'

import time
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from  import By
from selenium.webdriver.support import expected_conditions as EC

def login(account, password):
    # 因为亚马逊的登录页面需要在主页中获取
    login_url = get_login_url()
    options = webdriver.ChromeOptions()  # 开启chrome设置
    prefs = {"profile.managed_default_content_settings.images": 2}
    options.add_experimental_option("prefs", prefs)  # 设置无图模式
    # options.add_argument("--headless")    # 设置无头浏览器
    options.add_argument("--disable-gpu")
    driver = webdriver.Chrome(chrome_options=options)  # 实例化driver
    wait = WebDriverWait(driver, 10)  # 智能等待
    driver.get(login_url)
    account_input = wait.until(EC.presence_of_element_located((By.ID, 'ap_email')))
    password_input = wait.until(EC.presence_of_element_located((By.ID, 'ap_password')))
    submit = wait.until(EC.element_to_be_clickable((By.ID, 'signInSubmit')))
    account_input.send_keys(account)
    password_input.send_keys(password)
    submit.click()
    # 等待五秒。浏览器关闭
    time.sleep(5)
    driver.close()

# 获取登录地址
def get_login_url():
    headers = {
        "Host": 
        "User-Agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'
    }
    # 使用requests发送get请求,获取页面的源代码
    r = 
    # 使用bs4解析页面代码
    soup = BeautifulSoup(r, 'lxml')
    # css选择器获取元素
    url_params = soup.select('#nav-link-yourAccount')[0]['href']
    login_url =  + url_params
    print(login_url)
    return login_url

if __name__ == '__main__':
    login(你的账号, 你的密码)

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务