使用 SELECT 语句从表中随机选择特定数量的行
Selenium WebDriver 是一个强大的库,用于自动化 Web 浏览器的操作。我们可以使用它来执行各种任务,如填充表单、单击按钮和解析页面内容。
在这个教程中,我们将展示如何使用 Selenium WebDriver 模拟网站登录流程。我们还将使用 SELECT 语句从表中随机选择指定数量的行。
先决条件
- 安装 Python
- 安装 Selenium WebDriver
- 安装 MySQL Connector/Python(如果您使用的是 MySQL 数据库)
步骤
- 导入必要的库。
- 使用 WebDriver 打开浏览器。
- 导航到登录页面。
- 使用 SELECT 语句从表中随机选择指定数量的行。
- 使用随机用户名和密码填充登录表单。
- 单击登录按钮。
- 验证是否成功登录。
- 关闭浏览器。
代码
“`pythonfrom selenium import webdriverfrom selenium.webdriver.common.by import Byimport mysql.connector打开浏览器driver = webdriver.Chrome()导航到登录页面driver.get(“https://example.com/login”)使用 SELECT 语句从表中随机选择指定数量的行cnx = mysql.connector.connect(user=”root”, password=”password”, host=”localhost”, database=”database_name”)cursor = cnx.cursor()cursor.execute(“SELECT username, password FROM users ORDER BY RAND() LIMIT 1”)result = cursor.fetchone()cnx.close()使用随机用户名和密码填充登录表单username_input = driver.find_element(By.ID, “username”)username_input.send_keys(result[0])password_input = driver.find_element(By.ID, “password”)password_input.send_keys(result[1])单击登录按钮login_button = driver.find_element(By.ID, “login-button”)login_button.click()验证是否成功登录if driver.current_url == “https://example.com/home”:print(“登录成功”)else:print(“登录失败”)关闭浏览器driver.close()“`
总结
我们已经展示了如何使用 Selenium WebDriver 模拟网站登录过程。我们还展示了如何使用 SELECT 语句从表中随机选择指定数量的行。这些技术对于自动化 Web 任务和测试网站很有用。
怎么用python爬需要登录的网站数据
LoginSpider():name = login_spiderstart_urls = []def parse(self, response):return [_response(response,# username和password要根据实际页面的表单的name字段进行修改formdata={username: your_username, password: your_password},callback=_login)]def after_login(self, response):# 登录后的代码passselenium登录获取cookieget_cookie_by_ pickleimport timefrom selenium import webdriverdef get_cookies():url = _driver = ()web_(url)username = web__element_by_id(login-email)_keys(username)password = web__element_by_id(login-password)_keys(password)login_button = web__element_by_id(login-submit)login_()(3)cookies = web__cookies()web_()return cookiesif __name__ == __main__:cookies = get_cookies()(cookies, open(, wb))获取浏览器cookie(以Ubuntu的Firefox为例)get_cookie_by_ sqlite3import pickledef get_cookie_by_firefox():cookie_path = /home/name//firefox// (cookie_path) as conn:sql = select name,value from moz_cookies where baseDomain= = ()cookies = [{name: name, value: value} for name, value in (sql)()]return cookiesif __name__ == __main__:cookies = get_cookie_from_firefox()(cookies, open(, wb))6scrapy使用获取后的cookiecookies = (open(, rb))yield (url, cookies=cookies, callback=)12requests使用获取后的cookiecookies = (open(, rb))s = ()for cookie in (cookie[name], cookie[value])1234selenium使用获取后的cookiefrom selenium import webdrivercookies = (open(, rb))w = ()# 直接添加cookie会报错,下面是一种解决方案,可能有更好的# — start ()_all_cookies()# — end –for cookie in _cookie(cookie)
如何优雅地使用python采集阿里巴巴百万商户信息
Sublime是一款轻量文本编辑工具,可以用来快速编写python脚本,这里就不多作介绍,详情自己网络。
本期所需的工具包是selenium,用户需要自行安装,可以通过pip命令快速安装selenium,如下:因为本人先前已经成功安装selenium,所以这里提示“已经安装成功”,当然要使用pip命令,必须提前安装pip,自行网络,用户安装完上面的所有工具后我们就可以开始本期的装逼之旅了。
第一步、查看网页,确定抓取范围。
我们打开阿里巴巴采购首页,我们发现阿里巴巴提供了厂商的搜索接口,如下所示:第二步、我们试着搜索“化工”,查看得到的结果,如下:第三步、我们可以看到,我们要的基本信息都存在了,但是联系方式没有,我们任意打开一个厂商的页面,可以看到“联系”这个导航栏项目,点击联系,就可以看到厂商的联系方式,我们在将注意力放到网址url上,我们可以看到,联系这个页面的URL呈现规律性,如/page/,并且联系电话的位置是最前的,这极大地方便了我们采集我们想要的信息,如下:第四步、啰嗦了那么多,直接开始我们的代码:首先使用python的selenium包打开一个Firefox浏览器窗口#! /usr/bin/env python#coding:utf-8from selenium import webdriverimport sys# 解决中文报错的问题reload(sys)(utf-8)driver = ()以上程序就可以打开Firefox浏览器窗口,并且打开的浏览器窗口对象为driver,接下来我们模拟登录,找到阿里巴巴模拟登录的地址为,我们通这个地址模拟登录,并通过selenium的find_element_by_name方法获取网页中的DOM节点,有学过JavaScript的同学应该就会了解DOM节点,具体的代码如下url = k.635..d1loginUrl = t=true&redirect_url=3Dlogin_target_is_blank_1688%26tracelog%3Dmember_signout_signin_s_regdriver = ()(3)(loginUrl)(5)_element_by_name(TPL_username)_keys(这里是你的淘宝账号)_element_by_name(TPL_password)_keys(这里是你的淘宝密码)_element_by_name(TPL_password)_keys()(5)(url)模拟登录成功后我们让页面自动跳转到我们刚才搜索“化工”厂商的那个页面,其中使用了time包里的sleep函数,是为了防止在网速较差的时候,网页加载速度较慢,源码还未下载完毕就执行查找节点的命令导致程序运行失败。
接下来我们要做的是查找厂商的主页并找到其联系方式,并且发现厂商找到的结果共有100页,在这里,为了使用方便,我们直接使用for循环来模拟点击下一页进行采集。
具体的所有源代码如下所示#! /usr/bin/env python#coding:utf-8from selenium import webdriverfrom import Keysfrom _chains import ActionChainsimport timeimport urllibimport urllib2import sysimport osimport reimport csvimport numpy as np# 解决中文报错的问题reload(sys)(utf-8)csvfile = file(, wb)writer = (csvfile)((u企业名称(gbk), u主(gbk), u产品(gbk), u联系人(gbk), u电话(gbk), u(gbk)))url = 635..d1loginUrl = full_redirect=true&redirect_url=_is_blank_1688%26tracelog%3Dmember_signout_signin_s_regdriver = ()(3)(loginUrl)(5)_element_by_name(TPL_username)_keys(这里输入你的淘宝账号)_element_by_name(TPL_password)_keys(这里输入你的淘宝密码)_element_by_name(TPL_password)_keys()(5)(url)(15)user_agents = [Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/ Firefox/2.0.0.11,Opera/9.25 (Windows NT 5.1; U; en),Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CLR 1.1.4322; CLR 2.0.),Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu),Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/ Ubuntu/dapper-security Firefox/1.5.0.12,Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9,Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7,Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/ Firefox/10.0 ,]for page in xrange(1, 100):try:title = _elements_by_css_selector(a[class=list-item-title-text])product = _elements_by_xpath(//div[@class=\list-item-detail\]/div[1]/div[1]/a[1])print len(title)pattern = (<div.*?>(.*?)</div>, re.S)telPattern = (<dd>(.*?)</dd>, re.S)membernamePattern = (<a.*?class=membername.*?>(.*?)</a>, re.S)addressPattern = (address>(.*?)</dd>, re.S)for i in xrange(len(title)):titleValue = title[i]_attribute(title)hrefValue = title[i]_attribute(href) + page/ = product[i] = (user_agents)headers = {User-Agent : agent, Accept : */*, Referer : }request = (hrefValue, headers=headers)response = (request)html = ()info = (pattern, html)try:info = info[0]except Exception, e:continuetel = (telPattern, info)try:tel = tel[0]tel = ()tel = ( , -)except Exception, e:continuemembername = (membernamePattern, html)try:membername = membername[0]membername = ()except Exception, e:continueaddress = (addressPattern, html)try:address = address[0]address = ()except Exception, e:address = print tel: + telprint membername: + membernamedata = ((gbk, ignore), title[i]_attribute(href), (gbk, ignore), membername, tel, address)(data)for t in title:print _attribute(title)print _attribute(href) + page/ len(product)for p in product:a = repr()a = (gbk, ignore)print aprint # * 50js = var q==_script(js)(2)page = _elements_by_css_selector(a[class=page-next])page = page[0]()(10)except Exception, e:print ()()
python selenium drag_and_drop()和drag_and_drop_with_offset()怎么使用?
用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供了一个类来处理这类事件——ActionChains
这个类基本能够满足我们所有对鼠标操作的需求。
基本用法
首先需要了解ActionChains的执行原理,当你调用ActionChains的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用perform()方法时,队列中的时间会依次执行。
这种情况下我们可以有两种调用方法:
【搜客吧】_激活码商城_微商营销货源站 » 使用Selenium WebDriver轻松模拟网站登录流程 (使用SELECT语句随机地从表中挑出指定数量的行)
常见问题FAQ
- 本站资源可以代理扶持吗?有没有售后和技术支持?
- 具体请参照:https://www.wxzygp.com/345.html
- 遇到问题无法解决怎么办?
- 免费下载或者VIP会员资源能否直接商用?
- 购买该资源后,可以退款吗?