selenium自动登录并爬取信息

selenium自动登录和爬取信息

今天,我们引入selenium(web的自动化测试工具)来实现自动登录,我们要登录的是京东,并获取京东上面商品和图片的网址

  1. 什么是selenium?
    selenium是web自动化测试工具,它可以直接运行在浏览器上,它支持所有主流的浏览器(包括Chromedriver等有界面的浏览器和PhantomJS这些无界面的浏览器),可以接收命令,让浏览器自动加载页面,获取需要的数据,甚至可以页面截屏
  2. selenium的安装(pip install selenium)在这里插入图片描述
  3. 下载PhantomJS(无界面浏览器),下载网址为http://phantomjs.org/download.html
  4. 下载Chromedriver(有界面的浏览器),下载网址为http://npm.taobao.org/mirrors/chromedriver,注意:在下载之前要安装谷歌浏览器,并且下载的chromedriver要与谷歌浏览器的版本相对应。
  5. selenium实现京东的自动登录,首先要导入selenium模块中的webdriver(from selenium import webdriver),这里我们使用QQ账号登录
if __name__=='__main__':
    driver=webdriver.Chrome(executable_path='F:\\Download\\chromedriver.exe')
    driver.get('https://www.jd.com/')
    driver.find_element_by_xpath('//*[@id="ttbar-login"]/a[1]').click()
    driver.find_element_by_xpath('//*[@id="kbCoagent"]/ul/li[1]/a/span').click()
    current_window=driver.window_handles
    driver.switch_to.window(current_window[0])
    driver.switch_to.frame(0)
    driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
    driver.find_element_by_xpath('//*[@id="u"]').send_keys('QQ账号')
    time.sleep(2)
    driver.find_element_by_xpath('//*[@id="p"]').send_keys('QQ密码')
    time.sleep(2)
    driver.find_element_by_xpath('//*[@id="login_button"]').click()   #selenium实现自动登录
    time.sleep(10)
    driver.find_element_by_xpath('//*[@id="key"]').send_keys('2020连衣裙夏学生')
    driver.find_element_by_xpath('//*[@id="search"]/div/div[2]/button').click()
  1. 登录成功后的页面
    在这里插入图片描述
  2. 在页面中爬取想要的信息,商品网址以及商品图片的网址
response=driver.page_source
time.sleep(5)
res=etree.HTML(response)
data=res.xpath('//div/div[@class="p-img"]/a/@href')
for i in range(0,20):
    url='http:'+data[i]
    print(str(i+1)+'商品的网址:'+url)
    response1=requests.get(url).text
    res1=etree.HTML(response1)
    data3=res1.xpath('//a[@href="#none"]/img/@src')   #图片网址
    for i in range(0,len(data3)):
        imageurl='http:'+data3[i]
    print(' ','商品图片网址:',imageurl)
  1. 具体的代码如下:
from selenium import webdriver
import time
import requests
from lxml import html
etree=html.etree
if __name__=='__main__':
    driver=webdriver.Chrome(executable_path='F:\\Download\\chromedriver.exe')
    driver.get('https://www.jd.com/')
    driver.find_element_by_xpath('//*[@id="ttbar-login"]/a[1]').click()
    driver.find_element_by_xpath('//*[@id="kbCoagent"]/ul/li[1]/a/span').click()
    current_window=driver.window_handles
    driver.switch_to.window(current_window[0])
    driver.switch_to.frame(0)
    driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
    driver.find_element_by_xpath('//*[@id="u"]').send_keys('QQ账号')
    time.sleep(2)
    driver.find_element_by_xpath('//*[@id="p"]').send_keys('QQ密码')
    time.sleep(2)
    driver.find_element_by_xpath('//*[@id="login_button"]').click()   #selenium实现自动登录
    time.sleep(10)
    driver.find_element_by_xpath('//*[@id="key"]').send_keys('2020连衣裙夏学生')
    driver.find_element_by_xpath('//*[@id="search"]/div/div[2]/button').click()
    time.sleep(3)
    response=driver.page_source
    time.sleep(5)
    res=etree.HTML(response)
    data=res.xpath('//div/div[@class="p-img"]/a/@href')
    for i in range(0,20):
        url='http:'+data[i]
        print(str(i+1)+'商品的网址:'+url)
        response1=requests.get(url).text
        res1=etree.HTML(response1)
        data3=res1.xpath('//a[@href="#none"]/img/@src')   #图片网址
        for i in range(0,len(data3)):
            imageurl='http:'+data3[i]
        print(' ','商品图片网址:',imageurl)
  1. 运行结果如下:
    在这里插入图片描述
    当然,也可以在此页面上获取商品名称、价格、销量等等,这里我们主要介绍的是selenium的使用
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你讲解一下使用Selenium搜索并爬取网页指定信息的步骤。 1. 安装Selenium库:在Python环境中安装Selenium库,可以使用命令`pip install selenium`进行安装。 2. 下载对应浏览器的驱动程序:Selenium需要浏览器驱动程序来进行自动化操作,不同浏览器需要下载不同的驱动程序。比如,如果你使用的是Chrome浏览器,可以从Chrome官网下载对应版本的ChromeDriver驱动程序。 3. 打开浏览器并搜索信息:使用Selenium库打开浏览器,并使用`driver.get()`方法打开想要搜索的网站页面。然后,可以使用`driver.find_element_by_xpath()`或`driver.find_element_by_css_selector()`方法找到搜索框和搜索按钮,并使用`element.send_keys()`方法在搜索框中输入搜索关键字,使用`element.click()`方法点击搜索按钮。 4. 爬取指定信息:搜索结果页面加载完成后,可以使用`driver.find_element_by_xpath()`或`driver.find_element_by_css_selector()`方法找到想要爬取信息,并使用`element.text`或`element.get_attribute()`方法获取对应的内容。 5. 关闭浏览器:使用`driver.quit()`方法关闭浏览器。 需要注意的是,使用Selenium进行网页爬取时需要注意不要频繁请求同一个网站,否则可能会被网站服务器识别为机器人并限制访问。可以使用`time.sleep()`方法等待一段时间再进行下一次请求,或者使用代理IP来隐藏真实IP地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值