爬虫_task3

# 案例代码
from bs4 import BeautifulSoup
import requests
import time

def open_proxy_url(url):
    user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'
    headers = {'User-Agent': user_agent}
    try:
        r = requests.get(url, headers = headers, timeout = 20)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return(r.text)
    except:
        print('无法访问网页' + url)


def get_proxy_ip(response):
    proxy_ip_list = []
    soup = BeautifulSoup(response, 'html.parser')
    proxy_ips  = soup.select('.odd')#选择标签
    for proxy_ip in proxy_ips:
        ip = proxy_ip.select('td')[1].text
        port = proxy_ip.select('td')[2].text
        protocol = proxy_ip.select('td')[5].text
        if protocol in ('HTTP','HTTPS'):
            proxy_ip_list.append(f'{protocol}://{ip}:{port}')
    return proxy_ip_list

if __name__ == '__main__':
    proxy_url = 'https://www.xicidaili.com/'
    text = open_proxy_url(proxy_url)
    proxy_ip_filename = 'proxy_ip.txt'
    with open(proxy_ip_filename, 'w') as f:
        f.write(text)
    text = open(proxy_ip_filename, 'r').read()
    proxy_ip_list = get_proxy_ip(text)
    print(proxy_ip_list)
['HTTP://113.194.28.11:9999', 'HTTP://118.113.247.115:9999', 'HTTP://101.132.190.101:80', 'HTTPS://117.88.177.101:3000', 'HTTP://27.208.231.100:8060', 'HTTP://119.84.84.185:12345', 'HTTPS://119.4.13.26:1133', 'HTTP://114.223.208.165:8118', 'HTTP://221.237.37.137:8118', 'HTTPS://171.35.86.72:8118', 'HTTP://112.95.205.138:8888', 'HTTP://60.191.11.249:3128', 'HTTPS://121.13.252.60:41564', 'HTTPS://125.123.139.19:9000', 'HTTPS://116.204.142.62:8080', 'HTTP://163.125.71.198:9999', 'HTTPS://113.78.255.93:9000', 'HTTPS://58.255.38.156:9000', 'HTTP://123.163.24.113:3128', 'HTTPS://117.141.155.241:53281', 'HTTPS://121.13.252.60:41564', 'HTTPS://117.88.177.101:3000', 'HTTPS://114.99.54.65:8118', 'HTTPS://119.4.13.26:1133', 'HTTPS://117.45.139.84:9006', 'HTTPS://171.35.86.72:8118', 'HTTPS://114.223.103.47:8118', 'HTTPS://218.22.7.62:53281', 'HTTPS://61.164.39.69:53281', 'HTTPS://58.251.235.76:9797', 'HTTP://112.95.205.138:8888', 'HTTP://113.194.28.11:9999', 'HTTP://113.195.168.115:48888', 'HTTP://14.115.104.119:808', 'HTTP://60.167.112.236:1133', 'HTTP://101.132.190.101:80', 'HTTP://183.166.136.144:8888', 'HTTP://123.169.99.177:9999', 'HTTP://163.125.71.198:9999', 'HTTP://58.253.158.177:9999']
def get_proxy_ip(response):
    proxy_ip_list = []
    soup = BeautifulSoup(response, 'html.parser')
    proxy_ips = soup.find(id = 'ip_list').find_all('tr')
    for proxy_ip in proxy_ips:
        if len(proxy_ip.select('td')) >=8:
            ip = proxy_ip.select('td')[1].text
            port = proxy_ip.select('td')[2].text
            protocol = proxy_ip.select('td')[5].text
            if protocol in ('HTTP','HTTPS','http','https'):
                proxy_ip_list.append(f'{protocol}://{ip}:{port}')
    return proxy_ip_list
def open_url_using_proxy(url, proxy):
    user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'
    headers = {'User-Agent': user_agent}
    proxies = {}
    if proxy.startswith('HTTPS'):
        proxies['https'] = proxy
    else:
        proxies['http'] = proxy
    try:
        r = requests.get(url, headers = headers, proxies = proxies, timeout = 10)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return (r.text, r.status_code)
    except:
        print('无法访问网页' + url)
        return False
url = 'http://www.baidu.com'
text = open_url_using_proxy(url, proxy_ip_list[0])
无法访问网页http://www.baidu.com
def check_proxy_avaliability(proxy):
    url = 'http://www.baidu.com'
    result = open_url_using_proxy(url, proxy)
    VALID_PROXY = False
    if result:
        text, status_code = result
        if status_code == 200:
            print('有效代理IP: ' + proxy)
        else:
            print('无效代理IP: ' + proxy)
def check_proxy_avaliability(proxy):
    url = 'http://www.baidu.com'
    text, status_code = open_url_using_proxy(url, proxy)
    VALID = False
    if status_code == 200:
        if r_title:
            if r_title[0] == '<title>百度一下,你就知道</title>':
                VALID = True
    if VALID:
        print('有效代理IP: ' + proxy)
    else:
        print('无效代理IP: ' + proxy)
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
driver = webdriver.Chrome(r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
pip show selenium
Name: seleniumNote: you may need to restart the kernel to use updated packages.

Version: 3.141.0
Summary: Python bindings for Selenium
Home-page: https://github.com/SeleniumHQ/selenium/
Author: UNKNOWN
Author-email: UNKNOWN
License: Apache 2.0
Location: c:\programdata\anaconda3\lib\site-packages
Requires: urllib3
Required-by: 
driver.get("http://www.python.org") 
driver.close()
driver.quit()
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
name = '*'
passwd = '*'
driver = webdriver.Chrome(r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.get('https://mail.163.com/')
driver.maximize_window()
time.sleep(5)
current_window_1 = driver.current_window_handle
print(current_window_1)
CDwindow-9E260C6D46EB2AAD9A4B707C65FD08EA
button = driver.find_element_by_id('lbNormal')
button.click()
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[starts-with(@id, 'x-URS-iframe')]"))
email = driver.find_element_by_name('email')
#email = driver.find_element_by_xpath('//input[@name="email"]')
email.send_keys(name)
password = driver.find_element_by_name('password')
#password = driver.find_element_by_xpath("//input[@name='password']")
password.send_keys(passwd)
submit = driver.find_element_by_id("dologin")
time.sleep(15)
submit.click()
time.sleep(10)
print(driver.page_source)
driver.quit()
<html><head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1,user-scalable=no">
<title>URS组件</title>
<style type="text/css">
.headimg,.u-closebtn,.u-checkbox,.u-success,.etimg,.third,.ferrortail,.ferrortail2,.ferrortail3,.btn-qrcode,.i-qrsucc,.cap-box .cap-close,.u-logo-img1,.u-logo-img2,.u-logo-img3,.u-zc-agree-select,.u-dl-agree-select,.w-exception .close,.w-exception .logo,.w-exception .logo2,.w-exception .logo3,.u-tab .tab0,.u-tab .tab1,.country,.up-qrcode-close{background:url(//urswebzj.nosdn.127.net/webzj_cdn101/sprite_61fbe151ab715649c6b7c4ec39156201.png) no-repeat;_background:url(//urswebzj.nosdn.127.net/webzj_cdn101/sprite8_31811e6b333b8188ed4330196ed09dc9.png) no-repeat;}.w-exception .warnlogo,.fur-reg-success0,.fur-reg-success1,.fur-reg-success2{background:url(//urswebzj.nosdn.127.net/webzj_cdn101/sp_1873dafc7406a2973ac649387526ca17.png) no-repeat;_background:url(//urswebzj.nosdn.127.net/webzj_cdn101/sp8_6230cee07d1f53f9e8d3118bca269bd6.png) no-repeat;}.u-btn-loading,.loading-img{background:url(//urswebzj.nosdn.127.net/webzj_cdn101/loading_50c5e3e79b276c92df6cc52caeb464f0.gif) center center no-repeat !important;_background:url(//urswebzj.nosdn.127.net/webzj_cdn101/loading_50c5e3e79b276c92df6cc52caeb464f0.gif) center center no-repeat !important;}.ferrortail2-up{background:url(//urswebzj.nosdn.127.net/webzj_cdn101/webzjsm_340dcb56d4d1d39ffe82b83788646673.png) center center no-repeat !important;}.fur-agree-4 .u-zc-agree-select,.fur-agree-4 .u-dl-agree-select{background:url(//urswebzj.nosdn.127.net/webzj_cdn101/right_d9fec1cfd3a1926f3a0eb37470ee5506.png) center center no-repeat !important;}.fur-vip{background:url(//urswebzj.nosdn.127.net/webzj_cdn101/vip_94b2cc6d3f2f37bb5103c84095f23c14.jpg) 0 0 no-repeat;}
html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,form,fieldset,legend,input,button,textarea,menu{margin:0;padding:0;outline:none;}header,footer,section,article,aside,nav,hgroup,address,figure,figcaption,menu,details{display:block;}table{border-collapse:collapse;border-spacing:0;}caption,th{text-align:left;font-weight:normal;}html,body,fieldset,img,iframe,abbr{border:0;}i,cite,em,var,address,dfn{font-style:normal;}[hidefocus],summary{outline:0;}li{list-style:none;}h1,h2,h3,h4,h5,h6,small{font-size:100%;}sup,sub{font-size:83%;}pre,code,kbd,samp{font-family:inherit;}q:before,q:after{content:none;}textarea{overflow:auto;resize:none;}label,summary{cursor:default;}a,button{cursor:pointer;}h1,h2,h3,h4,h5,h6,em,strong,b{font-weight:normal;}del,ins,u,s,a,a:hover,a:active,a:focus{text-decoration:none;outline:none;}body,textarea,input,button,select,keygen,legend{font:12px/1.14 "Microsoft YaHei","微软雅黑","宋体",helvetica,"Hiragino Sans GB";color:#666;outline:0;}body{cursor:default;}input::-ms-clear,input::-ms-reveal{display:none;}a{color:#666;}button{border:0;}html,body{width:100%;height:auto;margin:0;padding:0;background:none;font-family:"Microsoft YaHei","微软雅黑";}input{width:225px;height:42px;padding-left:0;color:#333;border:0;font-size:16px;font-weight:bold;line-height:42px;}input:-webkit-autofill,textarea:-webkit-autofill,select:-webkit-autofill{-webkit-box-shadow:0 0 0 999px #fff inset;}input::-ms-clear{display:none;}input::-ms-reveal{display:none;}input:focus{border:none;outline:none;*border:0;*outline:0;}a,a:active,a:hover,a:visited{text-decoration:none;}input::-webkit-input-placeholder{font-size:14px;font-weight:normal;color:#bdbdbd;line-height:42px;height:42px;}input::-moz-placeholder{font-size:14px;font-weight:normal;color:#bdbdbd;}input:-ms-input-placeholder{font-size:14px;font-weight:normal;color:#bdbdbd;}input::-o-input-placeholder{font-size:14px;font-weight:normal;color:#bdbdbd;}.f-cb,.f-cbli li{zoom:1;}.f-cb:after,.f-cbli li:after{display:block;clear:both;visibility:hidden;height:0;overflow:hidden;content:".";}.f-ib{display:inline-block;*display:inline-block;*zoom:1;}.f-ff1{font-family:"Microsoft YaHei","微软雅黑","宋体",helvetica,"Hiragino Sans GB";}.f-fs12{font-size:12px;}.f-fs14{font-size:14px;}.f-ib{display:inline-block;*display:inline-block;*zoom:1;}.f-taj{text-align:justify;text-justify:inter-ideograph;}.f-wsn{word-wrap:normal;white-space:nowrap;}.f-pre{overflow:hidden;text-align:left;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;}.f-wwb{white-space:normal;word-wrap:break-word;word-break:break-all;}.f-toe{overflow:hidden;word-wrap:normal;white-space:nowrap;text-overflow:ellipsis;}.f-dn,.f-urs-dn{display:none !important;}.f-fl{float:left;}.f-fr{float:right;}.f-cp{cursor:pointer;}.f-vam,.f-vama *{vertical-align:middle;}.f-du,.f-du:hover{text-decoration:underline;}.f-db{display:block;}.f-vih{visibility:hidden;}.f-viv{visibility:visible;}@-webkit-keyframes flip{0%{-webkit-transform:perspective(2000px) rotateY(0deg);}100%{-webkit-transform:perspective(2000px) rotateY(90deg);}}@-webkit-keyframes flip_out{0%{-webkit-transform:perspective(2000px) rotateY(-90deg);}100%{-webkit-transform:perspective(2000px) rotateY(0deg);}}@keyframes flip{0%{transform:perspective(2000px) rotateY(0deg);}100%{transform:perspective(2000px) rotateY(90deg);}}@keyframes flip_out{0%{transform:perspective(2000px) rotateY(-90deg);}100%{transform:perspective(2000px) rotateY(0deg);}}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px);}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px);}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px);}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px);}}.shake{-webkit-animation-name:shake;animation-name:shake;}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px);}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px);}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown;}@-webkit-keyframes fadeOut{0%{opacity:1;}100%{opacity:0;}}@keyframes fadeOut{0%{opacity:1;}100%{opacity:0;}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3);}50%{opacity:1;}}@-webkit-keyframes fadeIn{0%{opacity:0;}100%{opacity:1;}}@keyframes fadeIn{0%{opacity:0;}100%{opacity:1;}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);}0%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3);}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1);}40%{-webkit-transform:scale3d(0.9,0.9,0.9);transform:scale3d(0.9,0.9,0.9);}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03);}80%{-webkit-transform:scale3d(0.97,0.97,0.97);transform:scale3d(0.97,0.97,0.97);}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);transition-timing-function:cubic-bezier(0.215,0.61,0.355,1);}0%{opacity:0;-webkit-transform:scale3d(0.3,0.3,0.3);-ms-transform:scale3d(0.3,0.3,0.3);transform:scale3d(0.3,0.3,0.3);}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1);}40%{-webkit-transform:scale3d(0.9,0.9,0.9);-ms-transform:scale3d(0.9,0.9,0.9);transform:scale3d(0.9,0.9,0.9);}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03);}80%{-webkit-transform:scale3d(0.97,0.97,0.97);-ms-transform:scale3d(0.97,0.97,0.97);transform:scale3d(0.97,0.97,0.97);}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1);}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:0.75s;animation-duration:0.75s;}#_wmswfctner_id{position:absolute;left:0;top:0;}input{background:#fff;}.u-tab .tab0,.u-tab .tab1{float:right;padding:0 0 0 34px;}.u-note{padding:0 0 14px 0;}.loading{width:295px;color:#fff;text-align:center;line-height:100%;font-size:14px;height:100%;background-color:#ccc;z-index:9000;position:absolute;top:0;right:0;opacity:0.8;font-weight:700;filter:alpha(opacity = 80);}.loading span{display:none;position:absolute;top:50%;left:50%;margin-top:-30px;margin-left:-80px;}.sucloading{width:100%;color:#333;text-align:center;line-height:100%;font-size:14px;height:100%;background-color:#fff;z-index:9000;position:absolute;top:0;right:0;font-size:16px;}.sucloading .loading-img{width:150px;height:32px;line-height:100px;}.sucloading div{position:absolute;top:50%;left:50%;margin-top:-29px;margin-left:-70px;}.g-bd{position:relative;width:420px;overflow:hidden;border-radius:4px;background:#fff;}.regManager{padding-top:20px;}.m-header{position:relative;padding:30px 0;}.m-header .headimg{width:150px;height:25px;margin:0 auto;background-position:-16px -28px;}.m-header .line{width:0px;height:20px;border-right:solid 1px #ebedf2;position:absolute;top:50px;}.m-header .u-head1,.m-header .u-head2{width:210px;height:58px;float:left;font-size:18px;text-align:center;border-bottom:solid 1px #ebedf2;line-height:58px;color:#ccc;}.m-header .u-head2{float:right;}.m-header .u-head1.active,.m-header .u-head2.active{color:#000;border-bottom:solid 1px #f53e3a;font-weight:border;}#cnt-box2 .m-header{padding:0;}.u-tab{width:300px;margin:0 auto;padding:0 0 20px 0;}.u-tab .tab0{background-position:-380px -440px;height:26px;line-height:26px;}.u-tab .tab1{background-position:-380px -380px;height:26px;line-height:26px;}.u-tab .tab0.active{background-position:-380px -478px;}.u-tab .tab1.active{background-position:-380px -410px;}.u-tab .active{color:#f53e3a;}.m-cnt{padding:0 50px;-webkit-user-select:none;}.m-cnt .inputbox{z-index:19;position:relative;height:44px;margin-bottom:0px;border:1px solid #c5cddb;background:#fff;font-size:12px;line-height:44px;}.m-cnt .inputbox2{margin-bottom:0;}.m-cnt .inputbox3{z-index:19;position:relative;margin-bottom:24px;font-size:14px;}.m-cnt .inputbox3 .tip{margin-top:8px;color:#999;}.m-cnt .inputbox3 .mobile{margin-top:24px;font-size:18px;color:#333;}.m-cnt .inputbox.active{border:1px solid #4aafe9;}.m-cnt .inputbox.error-color{border:1px solid #fa6060;}.m-cnt .inputbox.active .m-ferror{display:none;}.m-cnt .u-logo,.m-cnt .u-input,.m-cnt .u-tip{height:100%;}.m-cnt .u-logo{float:left;width:21px;text-align:center;padding:0 5px 0 10px;}.m-cnt .u-logo div{display:inline-block;width:22px;height:24px;margin-top:10px;*display:inline;*zoom:1;}.m-cnt .u-logo .u-logo-img1{background-position:-251px -86px;}.m-cnt .u-logo .u-logo-img2{background-position:-291px -86px;}.m-cnt .u-logo .u-logo-img3{background-position:2px -478px;}.m-cnt .u-sep{float:left;width:0;height:24px;margin-top:8px;border:none;border-left:1px solid #dce2ec;*line-height:0;*border:0;}.m-cnt .u-input{position:relative;float:left;}.m-cnt .u-input .js-mhd-parent{position:initial;}.m-cnt .ckie6{_margin-left:6px;}.m-cnt #password-box{*z-index:10;}.m-cnt #checkcode-box{*z-index:20;}.m-cnt .u-input input{height:42px;line-height:42px;padding-left:8px;}.m-cnt #register-form input.zcemail{width:265px;}.m-cnt #phone-form,.m-cnt #otp-form{height:260px;}.m-cnt .t-appeal{padding-bottom:40px;}.m-cnt .t-appeal a{color:#4cb5ff;}.m-cnt .t-appeal a:hover{color:#4b95ca;}.m-cnt #ppc-form{height:275px;}.m-cnt #ppc-form .m-ppcbox{width:221px;margin:0 auto;padding:25px 0 12px;}.m-cnt #ppc-form .i-card{display:inline-block;*display:inline;*zoom:1;width:32px;border:solid 1px #e5e5e5;margin:0 18px;color:#999;background:#ccc;}.m-cnt #ppc-form .i-card .coord{display:block;height:29px;width:32px;font-size:14px;color:#fff;line-height:29px;text-align:center;}.m-cnt #ppc-form .i-card .coord.clr1{background:#a3c66c;}.m-cnt #ppc-form .i-card .coord.clr2{background:#c64e41;}.m-cnt #ppc-form .i-card .coord.clr3{background:#467ec3;}.m-cnt #ppc-form .i-card .c-ipt{display:block;width:100%;height:32px;font-size:14px;color:#333;line-height:29px;text-align:center;}.m-cnt .u-tip{display:none;float:right;padding:0 10px;}.m-cnt .u-upsms-tip{display:block;}.m-cnt .u-upsms-tip .u-clear{background-position:-60px -89px;cursor:initial;}@-webkit-keyframes tada{0%{-webkit-transform:rotate(0);}10%,20%{-webkit-transform:rotate(-9deg);}30%,50%,70%,90%{-webkit-transform:rotate(9deg);}40%,60%,80%{-webkit-transform:rotate(-9deg);}100%{-webkit-transform:rotate(0);}}.m-cnt .u-shake{-webkit-animation:tada 1s 0s ease both;-moz-animation:tada 1s 0s ease both;-ms-animation:tada 1s 0s ease both;-o-animation:tada 1s 0s ease both;animation:tada 1s 0s ease both;}.m-cnt .u-success{display:inline-block;width:20px;height:20px;margin-top:12px;cursor:pointer;vertical-align:top;*display:inline;*zoom:1;}.m-cnt .statusTxt .u-success{margin-top:7px;}.m-cnt .u-suc{background-position:-194px -89px;}.m-cnt .u-clear{background-position:-147px -89px;}.m-cnt .u-eye{background-position:-179px -476px;width:22px;margin-top:10px;}.m-cnt .eyeactive .u-eye{background-position:-94px -476px;width:22px;}.m-cnt .ie67span{position:relative;*top:10px;_top:0;zoom:1;}.m-cnt #login-form .u-label{width:267px;}.m-cnt #login-form .m-ckcnt .u-label,.m-cnt #login-form .m-ckcnt input.cktext,.m-cnt #login-form .m-mb .u-label{width:130px;}.m-cnt #login-form .m-ckcnt{margin-top:16px;}.m-cnt .slidebox{margin-top:16px;z-index:399;}.m-cnt .u-label{position:absolute;width:306px;z-index:100;top:0;left:10px;color:#bdbdbd;font-size:14px;font-weight:normal;cursor:text;}.m-cnt .pr-domain{height:33px;line-height:33px;color:#616161;font-size:16px;overflow:hidden;display:block;right:-86px;position:absolute;top:5px;background:#fff;white-space:nowrap;}.m-cnt .m-ferror{position:absolute;top:-31px;left:-1px;width:225px;height:37px;color:#fff;border-radius:2px;font-size:0;*top:-40px;}.m-cnt .m-ferror div{display:inline-block;overflow:hidden;*display:inline;*zoom:1;}.m-cnt .m-ferror .ferrorhead{width:auto;height:37px;padding-right:8px;padding-left:32px;color:#999;background-position:0 -340px;font-size:12px;line-height:28px;}.m-cnt .m-ferror .ferrortail{width:3px;height:37px;background-position:0 -421px;*position:relative;*top:0px;}.m-cnt .m-nerror{top:-31px;left:-1px;color:#fff;border-radius:2px;font-size:0;*top:-40px;margin-bottom:0px;margin-top:16px;}.m-cnt .m-nerror .j-icon{position:relative;overflow:visible;}@-webkit-keyframes qrshow{0%{opacity:0;}100%{opacity:1;}}.m-cnt .m-nerror .up-qrcode-anim{-webkit-animation:qrshow 1s 1s ease both;-moz-animation:qrshow 1s 1s ease both;-ms-animation:qrshow 1s 1s ease both;-o-animation:qrshow 1s 1s ease both;animation:qrshow 1s 1s ease both;}.m-cnt .m-nerror .up-qrcode-close{display:block;position:absolute;width:10px;height:10px;right:5px;top:7px;cursor:pointer;background-position:-109px -95px;}.m-cnt .m-nerror .up-qrcode{cursor:auto;position:absolute;top:-44px;left:22px;width:120px;height:130px;box-shadow:0px 0px 20px rgba(98,108,120,0.3);z-index:8888;overflow:visible;border-radius:3px;background:#fff;}.m-cnt .m-nerror .up-qrcode .up-qrcode-inner{width:100px;height:100px;margin:4px auto 0;display:block;}.m-cnt .m-nerror .up-qrcode .arrow{position:absolute;width:20px;height:20px;z-index:8888;top:46px;left:-6px;}.m-cnt .m-nerror .up-qrcode .arrow *{display:block;border-width:6px;position:absolute;border-style:dashed solid dashed dashed;font-size:0;line-height:0;border-left:0;}.m-cnt .m-nerror .up-qrcode .arrow em{border-color:transparent #ccc transparent transparent;}.m-cnt .m-nerror .up-qrcode .arrow span{border-color:transparent #fff transparent transparent;right:13px;}.m-cnt .m-nerror a{text-decoration:underline;}.m-cnt .m-nerror div{display:inline-block;overflow:hidden;*display:inline;*zoom:1;}.m-cnt .m-nerror .ferrorhead,.m-cnt .m-nerror .ferrorhead2,.m-cnt .m-nerror .ferrorhead3,.m-cnt .m-nerror .ferrorhead4{width:298px;margin-top:-3px;color:#fa5b5b;font-size:12px;line-height:20px;vertical-align:top;word-break:break-all;}.m-cnt .m-nerror .ferrorhead a,.m-cnt .m-nerror .ferrorhead2 a,.m-cnt .m-nerror .ferrorhead3 a,.m-cnt .m-nerror .ferrorhead4 a{color:#4aafe9;text-decoration:none;}.m-cnt .m-nerror .ferrorhead2,.m-cnt .m-nerror .ferrorhead3,.m-cnt .m-nerror .ferrorhead4{color:#000;}.m-cnt .m-nerror strong{color:#4aafe9;}.m-cnt .m-nerror .ferrortail,.m-cnt .m-nerror .ferrortail2,.m-cnt .m-nerror .ferrortail3{height:15px;width:18px;background-position:-217px -34px;*position:relative;*top:0;}.m-cnt .m-nerror .ferrortail2{background-position:-316px -33px;}.m-cnt .m-nerror .ferrortail3{background-position:-249px -405px;width:20px;height:16px;}.m-cnt .m-nerror .ferrortail2-up{cursor:pointer;width:15px;height:18px;margin-right:3px;}.m-cnt .m-nerror .up-qrcode-tips{display:block;text-align:center;font-size:12px;font-weight:700;color:#666;margin-top:6px;}.m-cnt .m-ckcnt{font-size:0;}.m-cnt .m-ckcnt .inputbox{display:inline-block;vertical-align:top;*display:inline;*zoom:1;}.m-cnt .ckin{width:188px;float:left;}.m-cnt #register-form input.cktext{width:130px;}.m-cnt #register-form input.cktext[disabled],.m-cnt input.cktext:disabled{background:none;}.m-cnt .ckimgbox{width:118px;margin-left:10px;text-align:center;}.m-cnt .ckimg{width:118px;height:44px;cursor:pointer;border-radius:2px;line-height:44px;}.m-cnt .m-pccnt .ph-tip{padding:0 0 16px 0px;color:#999;}.m-cnt .m-pcbox{font-size:0;margin-top:16px;}.m-cnt .m-pcbox .u-label{width:176px;}.m-cnt .m-pc{display:inline-block;width:188px;vertical-align:top;*display:inline;*zoom:1;}.m-cnt .m-pc .pcin{width:130px;}.m-cnt .pcbtn{display:inline-block;margin-left:10px;vertical-align:top;*display:inline;*zoom:1;}.m-cnt .pcbtn a{display:block;width:120px;height:46px;text-align:center;color:#fff;font-size:14px;background:#2c82ff;line-height:46px;}.m-cnt .pcbtn a:hover{background:#2c82ff;}.m-cnt .pcbtn a:active{background:#2c82ff;}.m-cnt .pcbtn a.disable,.m-cnt .pcbtn a.disable:hover,.m-cnt .pcbtn a.disable:active{background:#ddd;color:#999;}.m-cnt .un-login,.m-cnt .zc-un-login,.m-cnt .dl-clause-login{width:14px;height:14px;margin:0;opacity:0;-moz-opacity:0;-khtml-opacity:0;filter:alpha(opacity = 0);}.m-cnt .m-etbox{margin-top:-10px;margin-right:-50px;margin-bottom:10px;margin-left:-50px;padding:10px 50px 10px 50px;border-top:1px solid #e6e9f0;border-bottom:1px solid #e6e9f0;background-color:#fafbfd;}.m-cnt .m-etbox .ettip{font-size:0;}.m-cnt .m-etbox .etimgbox{display:inline-block;width:14px;height:18px;margin-top:2px;vertical-align:top;*display:inline;*zoom:1;}.m-cnt .m-etbox .etimg{display:block;width:14px;height:14px;background-position:-320px -275px;}.m-cnt .m-etbox .ettext{display:inline-block;width:300px;margin-left:6px;vertical-align:top;color:#fb493d;font-size:11px;line-height:18px;*display:inline;*zoom:1;}.m-cnt .m-etbox .ettext strong{font-weight:700;color:#2d85be;}.m-cnt .m-etbox .ettext a{cursor:pointer;text-decoration:underline;color:#2c85bf;}.m-cnt .m-unlogin{padding:2px 0 9px 0;font-size:0;height:16px;line-height:16px;}.m-cnt .m-unlogin label,.m-cnt .m-unlogin input{cursor:pointer;}.m-cnt .m-unlogin .b-unlogn{display:block;width:104px;float:left;border-right:solid 1px #ccc;margin-right:8px;}.m-cnt .m-unlogin .b-unlogn .u-checkbox{display:block;float:left;width:14px;height:14px;cursor:pointer;border:solid 1px #aaa;color:#999;font-size:12px;}.m-cnt .m-unlogin .b-unlogn .u-checkbox-select{background-position:-330px -92px;}.m-cnt .m-unlogin .b-unlogn label{display:block;float:left;height:16px;padding-left:8px;font-size:12px;color:#999;line-height:17px;}.m-cnt .m-unlogin .b-unlogn label:hover{color:#666;}.m-cnt .m-unlogin .b-unlogn label:active{color:#666;}.m-cnt .m-unlogin .forgetpwd,.m-cnt .m-unlogin .forgetpwdReg{float:left;height:12px;text-decoration:none;cursor:pointer;color:#999;font-size:12px;line-height:16px;*padding-left:5px;}.m-cnt .m-unlogin .forgetpwd:hover,.m-cnt .m-unlogin .forgetpwdReg:hover{color:#666;}.m-cnt .m-unlogin .u-regbtn{cursor:pointer;font-size:12px;float:right;line-height:16px;}.m-cnt .m-unlogin .u-regbtn.bgcolor{color:#999;}.m-cnt .m-unlogin .u-regbtn.bgcolor:hover{color:#666;}.m-cnt .m-unlogin .u-regbtn.bgcolor:active{color:#666;}.m-cnt .m-unlogin .u-regbtn.bgcolor{color:#999;}.m-cnt .m-unlogin .u-regbtn.bgcolor:hover{color:#666;}.m-cnt .m-unlogin .u-regbtn.bgcolor:active{color:#666;}.m-cnt .m-sug{position:absolute;z-index:1000;top:42px;left:-1px;overflow:hidden;width:318px;border:1px solid #ccc;background:#fafbfd;font-size:12px;}.m-cnt #login-form .m-sug{left:-37px;border-radius:0 0 4px 4px;}.m-cnt .m-sug-ie10{top:40px \0;}.m-cnt .m-sug .itm{height:30px;padding-left:15px;cursor:pointer;color:#909ab0;line-height:30px;}.m-cnt #login-form .m-sug .itm{padding-left:45px;}.m-cnt .m-sug .js-selected{position:relative;height:28px;color:#2e343c;background:#e1eaf1;line-height:28px;}.m-cnt .js-selected .select-tip{position:absolute;display:none;top:0;left:0;width:6px;height:100%;background:#2c85bd;}.u-pwdtext{display:none !important;position:absolute;top:0;left:0;z-index:-1;}.m-ologin{height:26px;text-align:left;color:#9fabbf;}.m-ologin .otip{width:84px;height:26px;font-size:14px;line-height:26px;}.m-ologin .olist{height:26px;margin-left:89px;}.m-ologin .olist div{display:inline-block;vertical-align:top;*display:inline;*zoom:1;}.u-loginbtn{display:block;width:100%;height:44px;cursor:pointer;text-align:center;color:#fff;background:#ddd;font-size:18px;line-height:44px;}.u-loginbtn:hover{color:#fff;}.u-loginbtn:active{color:#edc8c8;}.u-btn-loading{background-color:#ca5252 !important;opacity:0.7;filter:alpha(opacity = 70);}.u-btn-loading-blue{background-color:#2c82ff !important;opacity:0.7;filter:alpha(opacity = 70);}.loginbox,.unlockbox{margin-bottom:16px;margin-top:16px;}.loginbox{margin-top:16px;margin-bottom:12px;}.u-btn{border-radius:3px;text-align:center;display:block;*display:inline-block;zoom:1;color:#fff;}.u-btn-big{width:320px;height:46px;font-size:20px;line-height:46px;}.u-btn-small{width:200px;height:20px;font-size:12px;line-height:20px;}.u-btn-middle1{margin:16px 0 0 0;width:320px;height:44px;font-size:16px;line-height:44px;display:inline-block;*display:inline-block;*zoom:1;}.u-btn-middle2{margin:0;margin-left:10px;width:114px;height:44px;font-size:16px;line-height:44px;display:inline-block;*display:inline-block;*zoom:1;}.u-btn-middle3{margin:0;width:145px;height:44px;font-size:18px;line-height:44px;text-align:center;border-radius:0;display:inline-block;*display:inline-block;*zoom:1;}.u-btn-bg{display:block;width:108px;height:28px;cursor:pointer;text-align:center;border-radius:2px;font-size:11px;line-height:28px;}.u-btn.bgcolor{color:#999;height:42px;line-height:42px;border:1px solid #999;}.u-btn-tiny{width:110px;height:28px;line-height:28px;border:1px solid #2c85bf;color:#2c85bf;}a.u-btn-tiny:hover{color:#2c85bf;}a.weibo,a.qq,a.weixin,a.yixin,a.renren,a.facebook,a.alipay{display:inline-block;margin:0 4px;cursor:pointer;*display:inline;*zoom:1;}a.weibo{width:22px;height:26px;background-position:-71px -140px;}a.qq{width:18px;height:26px;background-position:-217px -140px;}a.weixin{width:22px;height:26px;background-position:-376px -140px;}a.yixin{width:16px;height:26px;background-position:-71px -188px;}a.alipay{width:23px;height:26px;background-position:-377px -272px;}a.renren{width:18px;height:26px;background-position:-217px -186px;}a.facebook{width:10px;height:26px;background-position:-382px -188px;}a.weibo:hover{background-position:-2px -140px;}a.qq:hover{background-position:-142px -140px;}a.weixin:hover{background-position:-296px -140px;}a.yixin:hover{background-position:-5px -188px;}a.renren:hover{background-position:-142px -186px;}a.alipay:hover{width:23px;height:26px;background-position:-377px -229px;}a.facebook:hover{background-position:-302px -188px;}.cnt-box-include .u-closebtn{display:none;}.u-closebtn{position:absolute;top:16px;right:16px;width:30px;height:30px;cursor:pointer;-webkit-transition:-webkit-transform 0.5s;-moz-transition:-moz-transform 0.5s;-o-transition:-o-transform 0.5s;transition:transform 0.5s;background-position:-99px -85px;}.u-closebtn1{background-position:-99px -85px;}.u-closebtn:hover{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);}.m-sep{display:none;height:11px;text-align:center;}.m-sep .leftsep,.m-sep .rightsep{width:165px;height:6px;border-bottom:1px solid #d5dde8;}.m-sep .centertext{height:11px;font-size:11px;line-height:11px;text-align:center;color:#909eb5;}.m-footer{position:relative;padding:12px 50px 28px;}.m-footer .tip{line-height:28px;color:#999;font-size:12px;}.m-footer .m-pccnt{display:none;}.m-footer .m-pcbox{font-size:0;}.m-footer .m-pc{display:inline-block;width:188px;vertical-align:top;*display:inline;*zoom:1;}.m-footer .m-pc .pcin{width:130px;}.m-footer .pcbtn{display:inline-block;margin-left:10px;vertical-align:top;*display:inline;*zoom:1;}.m-footer .pcbtn a{display:block;width:120px;height:42px;text-align:center;color:#fff;background:#2aa8be;font-size:14px;line-height:42px;border-radius:0;}.m-footer .pcbtn a:hover{background:#3fb9ce;}.m-footer .pcbtn a:active{background:#1699b0;}.m-footer .pcbtn .adisable,.m-footer .pcbtn a.disable:hover,.m-footer .pcbtn a.disable:active{background:#ddd;color:#999;}.m-footer #cnt-box{width:420px;overflow:hidden;border-radius:4px;background:#fff;}.m-footer .btn-qrcode{position:absolute;width:54px;height:55px;right:0;bottom:0;background-position:-63px -251px;color:#fff;-webkit-transition:background-position 0.6s ease 0s;-moz-transition:background-position 0.6s ease 0s;-ms-transition:background-position 0.6s ease 0s;-o-transition:background-position 0.6s ease 0s;transition:background-position 0.6s ease 0s;border-radius:100px 0 0 0;}.m-footer .btn-qrcode.pc{background-position:-10px -304px;}.fur-vip{position:absolute;top:147px;left:50px;z-index:999;width:320px;height:230px;}.fur-vip .btn-vip{top:153px;left:114px;position:absolute;border:solid 1px #afa96d;border-radius:3px;width:100px;height:30px;font-size:13px;color:#afa96d;text-align:center;line-height:30px;}.u-zc-agree,.u-dl-agree{display:block;float:left;margin-right:5px;width:14px;margin-top:3px;height:14px;cursor:pointer;border:solid 1px #aaa;color:#999;font-size:12px;}.u-zc-agree .zc-un-login,.u-zc-agree .dl-clause-login,.u-dl-agree .zc-un-login,.u-dl-agree .dl-clause-login{cursor:pointer;}.fur-agree-4 .u-zc-agree,.fur-agree-4 .u-dl-agree{width:12px;height:12px;margin-top:4px;}.u-zc-agree-select,.u-dl-agree-select{background-position:-330px -92px;}.m-mail-clause,.m-mb-clause{margin-bottom:10px;}.fur-agree{color:#999;}.fur-agree a{color:#999;text-decoration:none;line-height:20px;}.fur-agree a:hover{color:#666;}.fur-agree-4{margin-top:20px;margin-bottom:-6px;}.fur-agree-4-up{margin-top:15px;}.fur-btn-agree{width:16px;height:16px;position:relative;top:3px;}.fur-reg-success0,.fur-reg-success1,.fur-reg-success2{width:88px;height:88px;margin:46px auto 24px;}.fur-reg-success0{background-position:0 0;}.fur-reg-success1{background-position:0 -206px;}.fur-reg-success2{background-position:0 -363px;}.fur-item{position:relative;}.u-logbtn{cursor:pointer;font-size:12px;float:right;margin-top:14px;position:relative;z-index:999;}.u-logbtn.bgcolor{color:#999;}.u-logbtn.bgcolor:hover{color:#666;}.u-logbtn.bgcolor:active{color:#666;}.u-logbtn.bgcolor{color:#999;}.u-logbtn.bgcolor:hover{color:#666;}.u-logbtn.bgcolor:active{color:#666;}.page-sms .loginbox{padding-bottom:64px;}.page-sms .goback{text-align:right;}.page-sms .goback .backToReg{font-size:14px;color:#5084cb;}.page-sms .small-note{font-size:12px;margin-bottom:15px;color:#9fabbf;}.page-sms .head-note{font-size:14px;color:#000;height:46px;line-height:46px;}.page-sms .smserror2{display:inline-block;width:300px;margin-left:6px;vertical-align:top;font-size:11px;line-height:18px;color:#000;}.page-sms .smserror2 strong{font-weight:700;color:#2d85be;}.m-qrcode{position:relative;color:#333;}.m-qrcode .m-goregqr{text-align:center;}.m-qrcode .m-goregqr a{color:#5584ff;}.m-qrcode .i-qrcode{display:block;width:144px;height:144px;margin:0 auto;padding-top:34px;line-height:160px;text-align:center;color:#aaa;}.m-qrcode .i-qrsucc{margin:0 auto;height:141px;width:151px;background-position:-139px -225px;margin-top:14px;}.m-qrcode .tlt{position:absolute;top:-30px;width:100%;font-size:20px;text-align:center;left:0;}.m-qrcode .warn{position:absolute;padding:50px 0;width:163px;top:23px;left:78px;line-height:32px;background:#f0f0f0;background:rgba(240,240,240,0.8);margin:0 auto;text-align:center;cursor:pointer;font-size:18px;font-weight:bold;}.m-qrcode .subtlt{display:block;text-align:center;font-size:14px;padding:20px 0;}.m-qrcode .subtlt a{color:#5584ff;}.m-qrcode .subtlt a:hover{color:#9cb4f5;}.m-qrcode .subtlt.tip{padding:25px 0 40px 0;}.m-qrcode .subtlt.succ{padding-top:21px;font-size:16px;}.m-qrcode .qrback{display:block;width:120px;margin:0 auto;text-align:center;font-size:14px;padding-top:29px;}.m-qrcode .qrback:hover{color:#4db5ff;}.captcha{position:absolute;background-color:#fff;top:50%;left:50%;z-index:999;border:solid 1px #ccc;width:438px;height:138px;border-radius:5px;margin-left:-219px;margin-top:-134px;box-shadow:0 0 5px #ccc;padding:56px 0 74px 0;}.captcha .inner-cnt{width:320px;margin:0 auto;}.captcha .m-ckcnt{width:320px;margin:0 auto;}.captcha .m-ckcnt .loginbox{margin-bottom:0;margin-top:0;}.captcha .fur-submit,.captcha2 .fur-submit{position:relative;}.captcha .fur-notice,.captcha2 .fur-notice{display:none;}.captcha .fur-item,.captcha2 .fur-item{font-size:16px;color:#2e343c;width:320px;margin:0 auto;padding-bottom:10px;}.captcha .fur-sms-captcha,.captcha2 .fur-sms-captcha{width:320px;margin:0 auto;}.captcha .fur-btn,.captcha2 .fur-btn{width:320px;margin:0 auto;}.captcha .captcha-btn0,.captcha2 .captcha-btn0{width:194px;margin:0;}.captcha .captcha-btn1,.captcha2 .captcha-btn1{width:114px;background:#fff;color:#536586;height:40px;line-height:40px;border-radius:5px;font-size:16px;text-align:center;cursor:pointer;position:absolute;right:0;top:0;border:solid 1px #9fabbf;border-radius:5px;display:block;}.fur-change-email{position:relative;width:320px;height:16px;line-height:16px;font-size:12px;}.fur-change-email a{float:right;line-height:32px;height:32px;outline:none;color:#2d85be;}.fur-page{font-size:14px;}.fur-page b{color:#333;}.fur-note{color:#909ab0;}.fur-page-success-netease,.fur-page-success-3p{display:block;width:320px;margin:0 auto;text-align:center;padding-bottom:1px;color:#999;}.fur-page-success-netease .fur-btn-note,.fur-page-success-3p .fur-btn-note{margin-bottom:70px;text-align:center;}.fur-page-success-netease p,.fur-page-success-3p p{text-align:left;line-height:20px;word-break:break-all;}.fur-page-success-netease h3,.fur-page-success-3p h3{color:#333;font-size:24px;font-weight:normal;padding-bottom:10px;}.fur-page-success-netease b,.fur-page-success-3p b{font-weight:normal;line-height:22px;height:22px;margin-bottom:10px;}.fur-page-success-netease .loginbox,.fur-page-success-3p .loginbox{margin:20px 0 0 0;}.fur-page-success-3p h3{padding-bottom:24px;}.fur-footer-ext{padding-bottom:0;position:relative;margin-top:16px;color:#999;width:100%;font-size:12px;text-align:center;}.fur-footer-ext li{line-height:20px;text-align:left;}.fur-footer-ext .fur-notice{text-align:left;height:110px;width:320px;margin:0 auto;}.fur-footer-ext .fur-notice a{color:#4aafe9;text-decoration:underline;}.fail0,.fail1{position:absolute;top:5px;width:100%;left:0;top:20px;width:100%;height:20px;z-index:999;color:#fff;font-size:14px;text-align:center;}.fail0 .box,.fail1 .box{width:90%;background:#000;opacity:0.7;padding:12px 0;margin:0 auto;}.fail0 .box{max-width:90%;}.m-confirm{width:100%;height:141px;background:#fff;border-radius:4px;top:0;left:0;z-index:99;}.m-confirm .btnbox{width:340px;margin:0 auto;}.m-confirm .note{padding:26px 0 38px 0;text-align:center;font-size:18px;color:#333;}.u-btn-confirm{margin:0;width:160px;height:32px;font-size:16px;line-height:32px;text-align:center;}.btncolor-ext{background:#ddd;color:#fff;margin-left:20px;color:#333;}.ScapTcha div.statusTxt{width:30px;padding-left:0;}.mbItlBox{z-index:29;}.mbItlBox .u-label{left:58px;}.mbItlBox input.dlemail{width:218px;padding-left:58px;}.mbtoggleitl-box{position:absolute;top:30px;right:0;}.mbtoggleitl-box .mbtoggleitl{color:#4cb5ff;}.u-goSmsLogin{color:#4cb5ff;}.u-toggleitlbox{padding-top:8px;text-align:right;}.toggleitl{color:#4cb5ff;}a.toggleitl:hover{color:#4b95ca;}.country{background-position:-349px -340px;position:absolute;left:0;top:0;height:38px;line-height:38px;width:50px;padding:0;z-index:999;background-color:#fff;text-align:center;cursor:pointer;}.country em,.u-country em{height:11px;line-height:11px;display:inline-block;margin-right:0.8em;}.country em{margin-top:16px;}.m-country .j-itlphone{text-indent:4px;}.m-country .i-inpt{text-indent:50px;}.m-country .js-placeholder{left:50px !important;}.m-country .u-label{width:250px;padding-left:40px;text-indent:4px;}.u-country{overflow-y:scroll;border:1px solid #ccc;background:#fff;z-index:9999;position:absolute;width:316px;height:150px;top:0;display:block;padding-left:2px;left:-1px;top:45px;}.u-country a{position:relative;display:block;height:24px;line-height:24px;overflow:hidden;}.u-country a:hover{background:#ccc;}.cap-box{display:block;width:100%;height:100%;position:fixed;top:0;left:0;z-index:999;text-align:center;}.cap-box .cap-title{text-align:left;font-size:14px;}.cap-box .cap-close{background-position:-106px -91px;position:absolute;right:10px;width:16px;height:16px;line-height:16px;font-size:16px;cursor:pointer;}.cap-box .cap-box-mask{background:#ccc;opacity:0.3;filter:alpha(opacity = 30);position:absolute;top:0;left:0;width:100%;height:100%;z-index:999;text-align:center;}.cap-box .cap-box-inner{display:inline-block;background:#fff;border:solid 1px #ccc;position:absolute;top:50%;left:50%;z-index:1000;box-shadow:0 0 10px rgba(0,0,0,0.3);}input:disabled{opacity:1;cursor:not-allowed;}.w-exception{width:420px;height:330px;border-radius:3px;}.w-exception .head{width:100%;height:160px;position:relative;}.w-exception .close{width:30px;height:30px;position:absolute;right:16px;top:16px;background-position:-99px -85px;cursor:pointer;}.w-exception .head .top{height:40px;width:100%;}.w-exception .logo{background-position:1px 0;width:267px;height:84px;margin:0 auto;}.w-exception .logo2{background-position:0px -114px;width:320px;height:100px;margin:0 auto;}.w-exception .logo3{background-position:0px -880px;width:303px;height:100px;margin:0 auto;}.w-exception .logo4{background-position:0px -1010px;width:263px;height:100px;margin:0 auto;}.w-exception .warnlogo{width:88px;height:88px;background-position:0 -357px;margin:0 auto;}.w-exception .cnt{padding:40px 58px 58px;}.w-exception .cnt .note{font-size:22px;text-align:center;line-height:32px;margin:16px 0 30px 0;color:#333;}.w-exception .cnt .note2{margin-top:13px;}.w-exception-normal{width:420px;height:330px;border-radius:3px;}.w-exception-normal .btnbox{text-align:center;}.w-exception-normal .head{width:100%;height:160px;position:relative;}.w-exception-normal .close{width:30px;height:30px;position:absolute;right:16px;top:16px;background-position:-99px -85px;cursor:pointer;}.w-exception-normal .head .top{height:40px;width:100%;}.w-exception-normal .logo{background-position:1px 0;width:267px;height:84px;margin:0 auto;}.w-exception-normal .logo2{background-position:0px -114px;width:320px;height:100px;margin:0 auto;}.w-exception-normal .logo3{background-position:0px -880px;width:303px;height:100px;margin:0 auto;}.w-exception-normal .logo4{background-position:0px -1010px;width:263px;height:100px;margin:0 auto;}.w-exception-normal .warnlogo{width:88px;height:88px;background-position:0 -357px;margin:0 auto;}.w-exception-normal .warnlogo img{width:100%;height:100%;}.w-exception-normal .cnt{padding:40px 58px 58px;}.w-exception-normal .cnt .note{font-size:22px;text-align:center;line-height:32px;margin:16px 0 30px 0;color:#333;}.w-exception-normal .cnt .note2{margin-top:13px;}.m-cnt .m-eye{display:none !important;}.m-cnt .u-pwdshow{display:block !important;position:absolute;right:20px;z-index:5;}.u-tip-eye{display:none;float:right;padding:0 10px;}.m-cnt .m-eye-close{right:50px !important;}
a.agree-dolock{background:#ccc;}a.agree-dolock:hover{background:#ccc;}a.agree-dolock:active{background:#ccc;}
</style>
<script type="text/javascript">
(function(){
    var loadStyleString = function(cssText) {
        var style = document.createElement("style");
        style.type = "text/css";
        try{
            // firefox、safari、chrome和Opera
            style.appendChild(document.createTextNode(cssText));
        }catch(ex) {
            // IE早期的浏览器 ,需要使用style元素的stylesheet属性的cssText属性
            style.styleSheet.cssText = cssText;
        }
        document.getElementsByTagName("head")[0].appendChild(style);
    }
    var _u=decodeURIComponent(location.search);
    var _sl = _u.substring(1)||'';
    var _s= _sl.split('&');
    var _cdnhostname;
    for(var i= 0,_l=_s.length;i<_l;i++){
        if (_s[i].indexOf('cdnhostname=')===0){
            _cdnhostname = _s[i].split('=')[1];
            var CDNHOSTREG = /^urswebzj[\d]+(-v6)?\.nosdn\.127\.net$/;
            if (CDNHOSTREG.test(_cdnhostname)){
                // 域名白名单
                window._$URSCDN = {
                    'cdnhostname':_cdnhostname
                }
            }
        }
    }
    var cdnhostname = window._$URSCDN && window._$URSCDN.cdnhostname;
    if (!cdnhostname){
        return;
    }
    var code = ".headimg,.u-closebtn,.u-checkbox,.u-success,.etimg,.third,.ferrortail,.ferrortail2,.ferrortail3,.btn-qrcode,.i-qrsucc,.cap-box .cap-close,.u-logo-img1,.u-logo-img2,.u-logo-img3,.u-zc-agree-select,.u-dl-agree-select,.w-exception .close,.w-exception .logo,.w-exception .logo2,.w-exception .logo3,.u-tab .tab0,.u-tab .tab1,.country,.up-qrcode-close{background:url(//"+cdnhostname+"/webzj_cdn101/sprite_61fbe151ab715649c6b7c4ec39156201.png) no-repeat;_background:url(//"+cdnhostname+"/webzj_cdn101/sprite8_31811e6b333b8188ed4330196ed09dc9.png) no-repeat;}.w-exception .warnlogo,.fur-reg-success0,.fur-reg-success1,.fur-reg-success2{background:url(//"+cdnhostname+"/webzj_cdn101/sp_1873dafc7406a2973ac649387526ca17.png) no-repeat;_background:url(//"+cdnhostname+"/webzj_cdn101/sp8_6230cee07d1f53f9e8d3118bca269bd6.png) no-repeat;}.u-btn-loading,.loading-img{background:url(//"+cdnhostname+"/webzj_cdn101/loading_50c5e3e79b276c92df6cc52caeb464f0.gif) center center no-repeat !important;_background:url(//"+cdnhostname+"/webzj_cdn101/loading_50c5e3e79b276c92df6cc52caeb464f0.gif) center center no-repeat !important;}.ferrortail2-up{background:url(//"+cdnhostname+"/webzj_cdn101/webzjsm_340dcb56d4d1d39ffe82b83788646673.png) center center no-repeat !important;}.fur-agree-4 .u-zc-agree-select,.fur-agree-4 .u-dl-agree-select{background:url(//"+cdnhostname+"/webzj_cdn101/right_d9fec1cfd3a1926f3a0eb37470ee5506.png) center center no-repeat !important;}.fur-vip{background:url(//"+cdnhostname+"/webzj_cdn101/vip_94b2cc6d3f2f37bb5103c84095f23c14.jpg) 0 0 no-repeat;}"
    loadStyleString(code);
})()
</script>
<script type="text/javascript">
(function(){
var resizeSetTimeout;
var styleOnload = function(node, callback) {
// for IE6-9 and Opera
if (node.attachEvent) {
node.attachEvent('onload', callback);
}
else {
setTimeout(function() {
poll(node, callback);
}, 0); // for cache
}
}
var poll = function(node, callback) {
if (callback.isCalled) {
return;
}
var isLoaded = false;
if (/webkit/i.test(navigator.userAgent)) {//webkit
if (node['sheet']) {
isLoaded = true;
}
}
// for Firefox
else if (node['sheet']) {
try {
if (node['sheet'].cssRules) {
isLoaded = true;
}
} catch (ex) {
// NS_ERROR_DOM_SECURITY_ERR
if (ex.code === 1000) {
isLoaded = true;
}
}
}
if (isLoaded) {
// give time to render.
setTimeout(function() {
callback();
}, 1);
}
else {
setTimeout(function() {
poll(node, callback);
}, 100);
}
}
var loadcss = function(_uri){
var node = document.createElement("link");
node.setAttribute("rel","stylesheet");
node.setAttribute("type","text/css");
node.setAttribute("href",_uri);
document.getElementsByTagName('head')[0].appendChild(node);
try{
styleOnload(node,function(){
// 尝试调用resize
if (window._$ursResize){
if (resizeSetTimeout){
resizeSetTimeout = clearTimeout(resizeSetTimeout);
}
resizeSetTimeout = setTimeout(window._$ursResize,200);
}
});
}catch(e){}
}
// 全局异常日志
window.onerror=function(_msg,_url,_line,_col,_obj){
var _pd = window._$PRODUCT||'';
var _pkid = window._$PKID||'';
var _h = decodeURIComponent(location.search);
_h = _h.substring(1)||'';
_h = _h.split('&');
for(var i = 0,_temp; i < _h.length; i++){
_temp = _h[i].split('=');
if (_temp[0]=='pkid'){
_pkid = _temp[1]
}
if (_temp[0]=='product'){
_pd = _temp[1]
}
}
_msg = _msg.replace(/\^/g,'$');
_url = _url.replace(/\^/g,'$');
var _img = document.createElement('img'),
_params = 'pd='+_pd+'&pkid='+_pkid+'&msg='+encodeURIComponent(_msg||'')+'&url='+encodeURIComponent(_url||'');
var ext = [];
ext.push(window.navigator.userAgent);
var f = arguments && arguments.callee && arguments.callee.caller, c = 3;
// 只拿3层堆栈信息
if (!!arguments.callee){
while (f && (--c>0)) {
ext.push(f.toString());
if (f === f.caller) {
break;//如果有环
}
f = f.caller;
}
ext = ext.join("%%");
ext = ext.replace(/\^/g,'$');
_params += '&ext='+encodeURIComponent(ext);
}else{
_params += '&ext='+encodeURIComponent(window.navigator.userAgent);
}
var _log = '//dl.reg.163.com/pgErr?'+_params;
_log = _log.slice(0,2000);
_img.style.width = 0;
_img.style.height = 0;
setTimeout(function(){
_img.src = _log;
},0);
}
// url解析
var _u=decodeURIComponent(location.search);
var _ht=location.host;
window._$BGP=0;
if (_ht.indexOf('webzj2')>=0||_ht.indexOf('passport2')>=0||_ht.indexOf('reg2')>=0||_ht.indexOf('dl2')>=0){
window._$BGP=1;
}
window.wdaId = 0;
if(_u.indexOf('?')!=-1){
var _sl = _u.substring(1)||'';
var _s= _sl.split('&');
var _d,_c,_cssl;
for(var i= 0,_l=_s.length;i<_l;i++){
if(_s[i].indexOf('cd=')===0){
_d = _s[i].split('=')[1];
}else if(_s[i].indexOf('cf=')===0){
_cssl = _s[i].split('=');
_cssl.shift();
_c = _cssl.join('=');
}else if(_s[i].indexOf('MGID=')===0){
window.mgid = _s[i].split('=')[1];
}else if (_s[i].indexOf('wdaId=')===0){
window.wdaId = _s[i].split('=')[1];
}
}
_c = _c ? _c.split(',') : [];
for (var i = 0,_l=_c.length,_uri; i < _l; i++){
_uri = _d + _c[i];
if (_uri.indexOf('reg.163.com/css2/login_index.css')>=0){
window.wdaId = 'UA1435545636633';
}
loadcss(_uri);
}
}
})()
</script><link rel="stylesheet" type="text/css" href="//mimg.127.net/p/freemail/index/unified/static/2020//css/urs.163.3262f873.css">
<style type="text/css">.auto-1587828765018-parent{position:relative;} .auto-1587828765018{position:absolute;border:1px solid #aaa;background:#fff;text-align:left;visibility:hidden;} .auto-1587828765018 .zitm{height:20px;line-height:20px;cursor:default;} .auto-1587828765018 .js-selected{background:#1257F9;}</style></head>
<body>
<div class="m-confirm f-dn" id="confirm">
<div class="note">你确定放弃注册吗?</div>
<div class="f-cb btnbox">
<a class="u-btn-confirm f-ib btncolor" data-action="confirmgoon">继续</a><a class="u-btn-confirm f-ib btncolor-ext" data-action="confirmclose">放弃</a>
</div>
</div>
<div class="g-bd cnt-box-include haserr" id="cnt-box-parent">
<div id="loading" class="f-dn"></div>
<div class="g-bd" id="cnt-box"><div class="m-header"><div class="u-closebtn u-closebtn1" data-action="doclose"></div><div class="headimg j-headimg"></div></div><div class="m-cnt"><form id="login-form"><div class="m-container"><div class="inputbox error-color" id="account-box"><div class="u-logo"><div class="u-logo-img1"></div></div><div class="u-input box"><label class="u-label f-dn" id="auto-id-1587828765046" style="display: none;">邮箱帐号或手机号码</label><input data-placeholder="邮箱帐号或手机号码" name="email" data-type="email" data-loginname="loginEmail" data-required="true" class="j-inputtext dlemail j-nameforslide" type="text" autocomplete="off" tabindex="1" spellcheck="false" id="auto-id-1587828765032" placeholder="邮箱帐号或手机号码"><span class="pr-domain j-prdomain" style="right: -5px;">@163.com</span></div><div class="u-tip" id="auto-id-1587828765052" style="display: block;"><div class="u-success u-clear"></div></div></div><div class="fur-change-email"></div><div class="inputbox"><div class="u-logo"><div class="u-logo-img2"></div></div><div class="u-input box"><label class="u-label f-dn" id="auto-id-1587828765055" style="display: none;">输入密码</label><input type="password" style="display:none;width:0;height:0;"><input data-placeholder="输入密码" name="password" maxlength="50" data-required="true" class="j-inputtext dlpwd" type="password" autocomplete="new-password" data-max-length="50" tabindex="2" spellcheck="false" id="auto-id-1587828765035" placeholder="输入密码"><input maxlength="50" data-placeholder="输入密码" type="text" id="pwdtext" class="u-pwdtext" placeholder="输入密码"></div><div class="u-tip" id="auto-id-1587828765061" style="display: block;"><div class="u-success u-clear"></div></div></div><div class="ckbox m-ckcnt f-cb f-dn"><div class="inputbox ckin"><div class="u-input"><label class="u-label f-dn" id="auto-id-1587828765064" style="display: block;">验证码</label><input data-placeholder="验证码" name="checkcode" class="j-inputtext cktext" type="text" data-required="true" data-max-length="4" maxlength="4" data-pattern="^[0-9a-zA-Z]{4,6}$" tabindex="3" spellcheck="false" autocomplete="off" id="auto-id-1587828765038" placeholder="验证码"></div><div class="u-tip" id="auto-id-1587828765070" style="display: none;"><div class="u-success u-clear"></div></div><div class="u-tip"><div class="u-success u-suc"></div></div></div><div class="inputbox ckimgbox f-fr"><img class="ckimg" title="点击刷新验证码" alt="点击获取验证码" onerror="" id="auto-id-1587828765072"></div></div><div class="ckbox m-ckcnt slidebox f-cb f-dn" style="position: relative;"><div class="ScapTcha" id="ScapTcha"></div><input type="hidden" id="pwd" value=""><input type="hidden" id="ct" value=""><input name="slidecap" style="height:0;width:0;display:none;" type="text" data-required="true" value="" id="auto-id-1587828765041"></div><div class="m-etbox" style="display:none;"><div class="ettip"><div class="etimgbox"><div class="img etimg"></div></div><div class="ettext"></div></div></div><div class="m-nerror err_email" id="nerror" data-from="email" tabindex="0" title="帐号格式错误"><div class="j-icon ferrortail"></div><div class="ferrorhead">帐号格式错误</div></div><div class="f-cb loginbox"><a href="javascript:void(0);" id="dologin" data-action="dologin" class="u-loginbtn btncolor tabfocus" tabindex="8">登&nbsp;&nbsp;录</a></div><div class="m-unlogin"><div class="b-unlogn j-unlogn"><span class="u-checkbox tabfocus"><input id="un-login" type="checkbox" name="un-login" class="un-login"></span><label for="un-login">十天内免登录</label></div><a class="forgetpwd j-redirect" data-outlink="1" href="//reg.163.com/resetpwd/index.do" target="_blank">忘记密码?</a><a id="changepage" data-action="none" class="u-regbtn bgcolor tabfocus j-redirect" href="https://mail.163.com/register/index.htm?from=163mail" data-outlink="2" target="_blank" tabindex="11">注册新帐号</a></div></div></form></div><div class="m-sep"><div class="leftsep f-fl"></div><div class="rightsep f-fr"></div><div class="centertext">网易用户中心</div></div><div class="m-footer" id="footer"><div class="f-cb"><p class="f-fl tip m-sep">您还没有网易邮箱帐号?</p><p class="f-fr"><a class="btn-qrcode j-btnqrcode f-dn"></a></p></div></div></div>
<div class="g-bd" id="cnt-box2" style="display:none;"></div>
</div>




<script type="text/javascript">
var _gaq = _gaq || [];
var _key = wdaId||'';
</script>

<script type="text/javascript">
(function(){
    var URLLIST = "dl_finger.js,fingerprint2.min-1.6.1.js,webzjconf.js,pp_index_dl_224f56d12fab63fe72dc3e88cf679580.js";
    URLLIST = URLLIST.split(',');
    var cdnhostname = (window._$URSCDN && window._$URSCDN.cdnhostname)||'urswebzj.nosdn.127.net';
    var INDEX = 0;
    var JSMAP = {
        'dl_finger.js':1,
        'zc_finger.js':1,
        'fingerprint2.min-1.6.1.js':1
    }
    var ZWURLMAP = {
        'dl_finger.js':'DLZW',
        'zc_finger.js':'ZCZW'
    }
    window._$URSZWLoader = {}
    var doLoadLastScript = function(url){
        var ogpercent = 0;
        ogpercent = window._$URSCDNCF && window._$URSCDNCF.ogpercent;
        var number = Math.random()*100;
        var script = document.createElement("script");
        script.type = 'text/javascript';
        script.src = url;
        var notIE = navigator.userAgent.indexOf('MSIE') === -1;
        // IE系不支持crossOrigin
        if (notIE && number < ogpercent){
            script.crossOrigin = "anonymous";
            script.onerror = function(){
                // 如果加载失败,重试
                var img = document.createElement("img");
                img.src = "https://webzj.reg.163.com/UA1435545636633/__utm.gif?ogerror=1"
                var script2 = document.createElement("script");
                script2.type = 'text/javascript';
                script2.src = url;
                document.body.appendChild(script2);
            }
        }
        document.body.appendChild(script);
    };
    var _getElement = function(_event){
        return !_event?null:(_event.target||_event.srcElement);
    };
    var _doAddListener = (function(){
        var _doScriptLoaded = function(_script,_isok){
            _script.onload = function(){}
            _script.onerror = function(){}
            _script.onreadystatechange = function(){}
            if (_isok){
                INDEX++
                loadScript()
            }else{
                var url = _script.src||'';
                // 如果触发错误,记录一下url
                var img = document.createElement('img')
                img.src = 'https://webzj.reg.163.com/UA1435545636633/__utm.gif?loadscripterror=1&url='+encodeURIComponent(url)
            }
        }
        var _statechange = function(_event){
            var _element = _getElement(_event)||this;
            if (!_element) return;
            var _state = _element.readyState;
            if (_state==='loaded'||
                _state==='complete')
                _doScriptLoaded(_element,!0);
        };
        return function(_script){
            _script.onload = function(e){_doScriptLoaded(_getElement(e),!0);};
            _script.onerror = function(e){_doScriptLoaded(_getElement(e),!1);};
            _script.onreadystatechange = _statechange;
        };
    })();
    var _doAddListenerError = function(_script,sourceUrl){
        _script.onerror = function(e){
            var _element = _getElement(e)
            _element.onerror = function(){}
            var _key = ZWURLMAP[sourceUrl]
            window._$URSZWLoader[_key]='finished'
            var img = document.createElement( 'img' )
            img.src = 'https://pr.nss.netease.com/sentry/passive?uapi=webzjzw&dataTime=0&clusterName=urs-webzj-static-passive&modelName=webzj_response_webzc&one=1&url='+_key
        }
    }
    var doLoadScript = function(url,needasync,sourceUrl){
        var script = document.createElement("script");
        script.type = 'text/javascript';
        if (sourceUrl === 'dl_finger.js'||sourceUrl === 'zc_finger.js'){
            // 指纹相关加载失败的情况
            _doAddListenerError(script,sourceUrl)
        }
        if (needasync){
            INDEX++
            loadScript()
        }else{
            _doAddListener(script)
        }
        script.src = url;
        document.body.appendChild(script);
    }
    var loadScript = function(){
        if (!URLLIST[INDEX]){
            return;
        }
        var sourceUrl = URLLIST[INDEX]
        var path = '/webzj_cdn101/';
        if (JSMAP[sourceUrl] === 1){
            path = '/webzj/'
        }
        var needasync = JSMAP[sourceUrl] === 1;
        var url = '//' + cdnhostname + path + sourceUrl;
        if (INDEX < URLLIST.length - 1){
            doLoadScript(url,needasync,sourceUrl);
        }else{
            doLoadLastScript(url);
        }
    }
    loadScript();
})()
</script><script type="text/javascript" src="//urswebzj.nosdn.127.net/webzj_cdn101/webzjconf.js"></script><script type="text/javascript" src="//urswebzj.nosdn.127.net/webzj/fingerprint2.min-1.6.1.js"></script><script type="text/javascript" src="//urswebzj.nosdn.127.net/webzj/dl_finger.js"></script>

<script type="text/javascript" src="//urswebzj.nosdn.127.net/webzj_cdn101/pp_index_dl_224f56d12fab63fe72dc3e88cf679580.js" crossorigin="anonymous"></script></body></html>
class TestDxylogin():
    def setup_method(self, method):
        self.driver = webdriver.Chrome(r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
        self.driver.set_page_load_timeout(3)
        self.vars = {}

    def teardown_method(self, method):
        self.driver.quit()

    def test_dxylogin(self):
        try:
            self.driver.get("http://www.dxy.cn/bbs/thread/626626#626626")
        except:
            self.driver.execute_script('window.stop ? window.stop() : document.execCommand("Stop");')
        self.driver.set_window_size(960, 1043)
        self.driver.find_element(By.LINK_TEXT, "登录").click()
        self.driver.find_element(By.LINK_TEXT, "返回电脑登录").click()
        self.driver.find_element(By.ID, "username").click()
        self.driver.find_element(By.ID, "username").send_keys("15652955057")
        self.driver.find_element(By.NAME, "password").click()
        self.driver.find_element(By.NAME, "password").send_keys("1234567890_")
        self.driver.find_element(By.NAME, "keepOnlineType").click()
        self.driver.find_element(By.CSS_SELECTOR, ".button").click()
        # self.driver.find_element(By.CSS_SELECTOR, ".geetest_slider_button").click()
        # self.driver.execute_script("window.scrollTo(0,2264)")
        # 处理验证码, 暂时手动点击,后续考虑通过OCR识别自动完成验证码
        # 等待指导登录成功
        try:
            WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='user-name']")))
        except:
            self.driver.execute_script('window.stop ? window.stop() : document.execCommand("Stop");')
        # 获取用户信息
        a =self.driver.find_elements_by_xpath('//div[@class="auth"]/a')
        b = self.driver.find_elements_by_xpath('//div[@class="user-level-area"]')
        a = [aa.text for aa in a]
        b = [bb.text for bb in b]
        try:
            self.driver.find_element(By.LINK_TEXT, "退出").click()
        except:
            self.driver.execute_script('window.stop ? window.stop() : document.execCommand("Stop");')
        self.driver.close()
        return a, b

分布式爬虫是指通过多个节点同时运行爬虫程序,提高数据抓取的效率。scrapy-redis是一个用于实现分布式爬虫的Scrapy扩展库,它可以将爬取的URL任务队列存储在Redis中,从而实现多个节点之间的任务共享。 scrapy-redis的使用可以分为以下几个步骤: 1. 首先,我们需要在爬虫程序中引入scrapy_redis库,并将原来继承的scrapy.Spider类改为引入的RedisSpider类。这样就可以使用RedisSpider的功能了。 2. 其次,我们需要配置Redis连接信息,在settings.py文件中设置REDIS_HOST和REDIS_PORT参数,来连接Redis数据库。 3. 然后,在爬虫的start_urls中定义初始URL,这些URL将被添加到Redis队列中作为初始任务。可以使用redis-cli命令行工具来查看队列中的URL任务。 4. 接下来,我们可以使用scrapy_redis提供的调度器(Scheduler)和去重过滤器(DupeFilter)类来管理URL任务队列。调度器类scheduler.py用于调度URL任务,而去重过滤器类dupefilter.py用于去除重复的URL,避免重复抓取。 5. 最后,我们可以使用scrapy-redis提供的pipeline来存储抓取到的数据到MySQL数据库中。可以自定义一个Pipeline类,继承scrapy_redis.pipelines.RedisPipeline,并在settings.py文件中启用该Pipeline。 综上所述,分布式爬虫scrapy-redis与MySQL的使用包括引入scrapy_redis库、配置Redis连接信息、定义初始URL、使用调度器和去重过滤器管理URL任务队列,以及使用自定义的Pipeline将数据存储到MySQL数据库中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [scrapy 分布式爬虫全集](https://download.csdn.net/download/bobbykey/10291995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Scrapy基于scrapy_redis实现分布式爬虫部署](https://blog.csdn.net/weixin_29137997/article/details/113682107)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值