中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

公司手機(jī)網(wǎng)站制作seo收費(fèi)標(biāo)準(zhǔn)

公司手機(jī)網(wǎng)站制作,seo收費(fèi)標(biāo)準(zhǔn),網(wǎng)站建設(shè)畢業(yè)論文百度文庫,招標(biāo)網(wǎng)站都有哪些1.selenium自動(dòng)化 selenium可以操作瀏覽器,在瀏覽器頁面上實(shí)現(xiàn):點(diǎn)擊、輸入、滑動(dòng) 等操作。 不同于selenium自動(dòng)化,逆向本質(zhì)是: 分析請求,例如:請求方法、請求參數(shù)、加密方式等。用代碼模擬請求去實(shí)現(xiàn)同等…

1.selenium自動(dòng)化

selenium可以操作瀏覽器,在瀏覽器頁面上實(shí)現(xiàn):點(diǎn)擊、輸入、滑動(dòng) 等操作。

不同于selenium自動(dòng)化,逆向本質(zhì)是:

  • 分析請求,例如:請求方法、請求參數(shù)、加密方式等。
  • 用代碼模擬請求去實(shí)現(xiàn)同等功能。

逆向 vs 自動(dòng)化Selenium

  • Selenium,【優(yōu)】簡單不需要逆向,只需要控制瀏覽器去執(zhí)行預(yù)設(shè)的操作即可;【缺點(diǎn)】性能差,不利于批量實(shí)現(xiàn)
  • 逆向, 【優(yōu)】算法逆向出來后,性能好且利于批量實(shí)現(xiàn); 【缺點(diǎn)】語法難搞的js加密算法,不容易逆向

2.必備操作

2.1 模塊 & 驅(qū)動(dòng)

  • 安裝模塊

    pip install selenium
    
  • 下載驅(qū)動(dòng)

    Selenium想要控制谷歌、火狐、IE、Edage等瀏覽器,必須要使用對應(yīng)的驅(qū)動(dòng)才行。【Selenium】->【驅(qū)動(dòng)】->【瀏覽器】【Selenium】->【火狐驅(qū)動(dòng)】->【火狐瀏覽器】【Selenium】->【谷歌驅(qū)動(dòng)】->【谷歌瀏覽器】谷歌驅(qū)動(dòng)的下載:114及之前版本: http://chromedriver.storage.googleapis.com/index.html117/118/119版本: https://googlechromelabs.github.io/chrome-for-testing/瀏覽器版本的獲取:在谷歌瀏覽器上訪問 chrome://version/   例如:119.0.6045.200 (正式版本) (64 位) (cohort: Stable) 
    
  • 快速使用

    import time
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Serviceservice = Service("driver/chromedriver.exe")
    driver = webdriver.Chrome(service=service)driver.get('https://passport.bilibili.com/login')time.sleep(5)
    driver.close()
    

2.2 尋找標(biāo)簽

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('打開網(wǎng)址')# find_element  find_elements
tag = driver.find_element(By.ID, "user")
tag = driver.find_element(By.CLASS_NAME, "c1")
tag = driver.find_element(By.TAG_NAME, "div")
tag = driver.find_element(By.XPATH, "/html/body/div[1]/div/div[2]/div[3]/div[3]/div/div/div/div[1]/span[2]")
tag = driver.find_element(By.XPATH, '//*[@id="geetest-wrap"]//input[@name="tel"]')tag_list = driver.find_elements(By.XPATH, "/html/body/div/div[2]/div/div[2]/div/div[2]/div[2]/div/div/div/div/div[2]/a")
for tag in tag_list:print(tag)time.sleep(5)
driver.close()

示例:5xclass.cn

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('https://www.5xclass.cn/')# 根據(jù)ID尋找
tag = driver.find_element(By.ID, "bs-example-navbar-collapse-1")
print(tag.text)
print(10 * "-")# 根據(jù)類名尋找
tags = driver.find_elements(By.CLASS_NAME, "panel-heading")
for tag in tags:print(tag.text)
print(10 * "-")# 根據(jù)標(biāo)簽名稱尋找
tags = driver.find_elements(By.TAG_NAME, "li")
for tag in tags:print(tag.text)
print(10 * "-")# 根據(jù)XPATH尋找
tag = driver.find_element(By.XPATH, "/html/body/div/div[2]/div/div[2]/div/div[2]/div[1]")
print(tag.text)
print(10 * "-")# 根據(jù)XPATH尋找
tag = driver.find_element(By.XPATH, '//*[@id="bs-example-navbar-collapse-1"]/ul[1]/li[1]/a')
print(tag.text)
print(10 * "-")# 根據(jù)XPATH尋找多個(gè)
tags = driver.find_elements(By.XPATH, '/html/body/div/div[2]/div/div[2]/div/div[2]/div[2]/div/div/div/div/div[2]/a')
for tag in tags:print(tag.text)
print(10 * "-")# 根據(jù)父子關(guān)系嵌套尋找
parent = driver.find_element(By.XPATH, '/html/body/div/div[2]/div/div[2]/div/div[2]/div[2]/div/div/div/div')
tags = parent.find_elements(By.XPATH, "div[@class='course']/a")
for tag in tags:print(tag.text)time.sleep(5)
driver.close()

2.3 執(zhí)行操作

常見的執(zhí)行操作:點(diǎn)擊、輸入

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('https://passport.bilibili.com/login')# 1.點(diǎn)擊短信登錄
time.sleep(3)
sms_btn = driver.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]'
)
sms_btn.click()  # 點(diǎn)擊# 2.輸入賬號
phone_txt = driver.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[2]/div[1]/div[1]/input'
)
phone_txt.send_keys("18630087660")  # 輸入time.sleep(55)
driver.close()

2.4 執(zhí)行JavaScript

如果【選擇標(biāo)簽】【執(zhí)行操作】這種操作起來比較繁瑣,也可以直接在頁面上去執(zhí)行js代碼實(shí)現(xiàn)功能。

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('https://passport.bilibili.com/login')# #############  1.點(diǎn)擊短信登錄 #############
time.sleep(3)
sms_btn = driver.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]'
)
sms_btn.click()# #############  2.輸入賬號 #############
phone_txt = driver.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[2]/div[1]/div[1]/input'
)
phone_txt.send_keys("18630087660")# ############# 3.選擇國家 #############
time.sleep(2)
driver.execute_script('document.querySelector(".area-code-select").children[18].click()')# ############# 4.讀取cookie #############
data_string = driver.execute_script('return document.cookie;')   # return document.title;
print(data_string)# ############# 5.讀取cookie #############
cookie_list = driver.get_cookies()
print(cookie_list)time.sleep(2550)
driver.close()

2.5 等待

如果頁面加載比較慢,需要等待某個(gè)元素加載成功后,再執(zhí)行某些操作。

示例1:基于lambda表達(dá)式

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.wait import WebDriverWaitservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('https://passport.bilibili.com/login')# #############  方式1:點(diǎn)擊短信登錄 #############
time.sleep(3)
sms_btn = driver.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]'
)
sms_btn.click()# #############  方式2:點(diǎn)擊短信登錄(推薦) #############
sms_btn = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]'
))
sms_btn.click()

示例2:自定義函數(shù)

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.wait import WebDriverWaitservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('https://passport.bilibili.com/login')def func(dv):print("無返回值,則間隔0.5s執(zhí)行一次此函數(shù);如有返回值,則復(fù)制給sms_btn變量")# <div xxx="123" id="uuu"></div># <img src="..."/>tag = dv.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]')img_src = tag.get_attribute("xxx")if img_src:return tagreturnsms_btn = WebDriverWait(driver, 30, 0.5).until(func)
sms_btn.click()time.sleep(250)
driver.close()

2.4 執(zhí)行JavaScript

如果【選擇標(biāo)簽】【執(zhí)行操作】這種操作起來比較繁瑣,也可以直接在頁面上去執(zhí)行js代碼實(shí)現(xiàn)功能。

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('https://passport.bilibili.com/login')# #############  1.點(diǎn)擊短信登錄 #############
time.sleep(3)
sms_btn = driver.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]'
)
sms_btn.click()# #############  2.輸入賬號 #############
phone_txt = driver.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[2]/div[1]/div[1]/input'
)
phone_txt.send_keys("18630087660")# ############# 3.選擇國家 #############
time.sleep(2)
driver.execute_script('document.querySelector(".area-code-select").children[18].click()')# ############# 4.讀取cookie #############
data_string = driver.execute_script('return document.cookie;')   # return document.title;
print(data_string)# ############# 5.讀取cookie #############
cookie_list = driver.get_cookies()
print(cookie_list)time.sleep(2550)
driver.close()

2.5 等待

如果頁面加載比較慢,需要等待某個(gè)元素加載成功后,再執(zhí)行某些操作。

示例1:基于lambda表達(dá)式

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.wait import WebDriverWaitservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('https://passport.bilibili.com/login')# #############  方式1:點(diǎn)擊短信登錄 #############
time.sleep(3)
sms_btn = driver.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]'
)
sms_btn.click()# #############  方式2:點(diǎn)擊短信登錄(推薦) #############
sms_btn = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]'
))
sms_btn.click()

示例2:自定義函數(shù)

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.wait import WebDriverWaitservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('https://passport.bilibili.com/login')def func(dv):print("無返回值,則間隔0.5s執(zhí)行一次此函數(shù);如有返回值,則復(fù)制給sms_btn變量")# <div xxx="123" id="uuu"></div># <img src="..."/>tag = dv.find_element(By.XPATH,'//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]')img_src = tag.get_attribute("xxx")if img_src:return tagreturnsms_btn = WebDriverWait(driver, 30, 0.5).until(func)
sms_btn.click()time.sleep(250)
driver.close()

示例3:全局配置

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)# 后續(xù)找元素時(shí),沒找到時(shí)則等待10去尋找(一旦找到則繼續(xù))
driver.implicitly_wait(30)driver.get('https://passport.bilibili.com/login')sms_btn = driver.find_element(By.XPATH,# '//*[@id="app"]/div[2]/div[2]/div[3]/div[1]/div[3]''//*[@id="xxxxxxxxxapp"]/div[2]/div[2]/div[3]/div[1]/div[3]'
)
sms_btn.click()
print("找到了")
time.sleep(250)
driver.close()

2.6 獲取值

當(dāng)找到某個(gè)標(biāo)簽之后,想要獲取標(biāo)簽內(nèi)部值。

示例1:文本和屬性

例如:<a id='x1' class="info mine" href="5xclass.cn">武沛齊</a>

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
service = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.implicitly_wait(10)driver.get('https://www.5xclass.cn')tag = driver.find_element(By.XPATH,'/html/body/div/div[2]/div/div[2]/div/div[2]/div[2]/div/div/div/div/div[2]/a[1]'
)
print(tag.text)
print(tag.get_attribute("target"))
print(tag.get_attribute("data-toggle"))driver.close()

示例2:獲取值

例如:<input type='text' value="?" placeholder="?" />

例如:<select ><option value='1'>北京</option> </option value='2'>上海</option> </select> ,獲取select標(biāo)簽的value屬性

import timefrom selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.implicitly_wait(10)driver.get('https://www.bilibili.com/')time.sleep(10)tag = driver.find_element(By.XPATH,'//*[@id="nav-searchform"]/div[1]/input'
)
print(tag)
print(tag.text)
print(tag.get_attribute("placeholder"))
print(tag.get_attribute("value"))time.sleep(1000)
driver.close()

示例3:選擇相關(guān)

<input type="radio" name="findcar" value="1" checked="">新車
<input type="radio" name="findcar" value="2">二手機(jī)
import timefrom selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import Byservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.implicitly_wait(10)driver.get('https://www.autohome.com.cn/beijing/')# ############### 1.單獨(dú)找到每一個(gè) ###############
tag = driver.find_element(By.XPATH,'/html/body/div[1]/div[11]/div[2]/div[1]/div[1]/label[1]/span/input'
)
print(tag.get_property("checked")) # Truetag = driver.find_element(By.XPATH,'/html/body/div[1]/div[11]/div[2]/div[1]/div[1]/label[2]/span/input'
)
print(tag.get_property("checked")) # False# ############### 2.循環(huán)找到每一個(gè) ###############
parent = driver.find_element(By.XPATH,'/html/body/div[1]/div[11]/div[2]/div[1]/div[1]'
)tag_list = parent.find_elements(By.XPATH,'label/span/input'
)
for tag in tag_list:print( tag.get_property("checked"), tag.get_attribute("value") )driver.close()

2.7 源碼+bs4

打開頁面后,如果基于selenium不太容易定位和尋找,也可以結(jié)合bs4來進(jìn)行尋找。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoupservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)
driver.implicitly_wait(10)driver.get('https://car.yiche.com/')html_string = driver.page_sourcesoup = BeautifulSoup(html_string, features="html.parser")
tag_list = soup.find_all(name="div", attrs={"class": "item-brand"})
for tag in tag_list:child = tag.find(name='div', attrs={"class": "brand-name"})print(child.text)driver.close()

2.8 攜帶Cookie

driver.add_cookie({'name': 'foo', 'value': 'bar'})
import timefrom selenium import webdriver
from selenium.webdriver.chrome.service import Serviceservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)# 注意:一定要先訪問,不然Cookie無法生效
driver.get('https://dig.chouti.com/about')# 加cookie
driver.add_cookie({'name': 'token','value': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqaWQiOiJjZHVfNDU3OTI2NDUxNTUiLCJleHBpcmUiOiIxNzA0MzI5NDY5OTMyIn0.8n_tWcEHXsBSXWIY9rBoGWwaLPF8iWIruryhKTe5_ks'
})# 再訪問
driver.get('https://dig.chouti.com/')time.sleep(2000)
driver.close()

2.9 IP檢測和代理

如果網(wǎng)站進(jìn)行了IP訪問限制,例如:每個(gè)IP每天只能操作5次。此時(shí)可以選擇購買IP,然后在請求時(shí)添加代理IP即可,具體步驟:

  • 購買IP
  • 登錄購買IP渠道的后臺,配置自己IP白名單
  • 代碼攜帶代理
import time
import requests
from selenium import webdriver
from selenium.webdriver.chrome.service import Service# 換成自己生成的代理
res = requests.get(url="https://dps.kdlapi.com/api/getdps/?secret_id=o60wwtxvs5ukaqqz18ai&num=1&signature=i6s9shfjfiogat5ijecbyfwwc5grwrzj&pt=1&format=json&sep=1")
proxy_string = res.json()['data']['proxy_list'][0]
print(f"獲取代理:{proxy_string}") # "182.106.136.218:40192"service = Service("driver/chromedriver.exe")opt = webdriver.ChromeOptions()
# opt.add_argument(f'--proxy-server=222.89.70.40:40001')  # 代理
opt.add_argument(f'--proxy-server={proxy_string}')  # 代理
driver = webdriver.Chrome(service=service, options=opt)driver.get('https://myip.ipip.net/')time.sleep(2000)
driver.close()

2.10 特征檢測

有些網(wǎng)站為了防止selenium,會檢測特征,并禁止訪問。

如果想要正常使用selenium訪問,那就需要隱藏瀏覽器相關(guān)的特征。

import time
import requests
from selenium import webdriver
from selenium.webdriver.chrome.service import Serviceservice = Service("driver/chromedriver.exe")opt = webdriver.ChromeOptions()opt.add_argument('--disable-infobars')
opt.add_experimental_option("excludeSwitches", ["enable-automation"])
opt.add_experimental_option('useAutomationExtension', False)driver = webdriver.Chrome(service=service, options=opt)# Selenium在打開任何頁面之前,先運(yùn)行這個(gè)Js文件。
with open('driver/hide.js') as f:driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": f.read()})driver.get('https://www.5xclass.cn')time.sleep(2000)
driver.close()

2.11 無頭和其他

如果不想顯示展示在瀏覽器上的操作,只想偷偷的在后臺運(yùn)行。

opt.add_argument('--headless')
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Serviceservice = Service("driver/chromedriver.exe")
opt = webdriver.ChromeOptions()
opt.add_argument('--headless')
driver = webdriver.Chrome(service=service, options=opt)driver.get('https://www.5xclass.cn')
tag = driver.find_element(By.XPATH,'/html/body/div/div[2]/div/div[2]/div/div[2]/div[2]/div/div/div/div/div[2]/a[1]'
)
print(tag.text)
print(tag.get_attribute("target"))
print(tag.get_attribute("data-toggle"))driver.close()

其他配置:

opt.add_argument('--disable-infobars')                    # 禁止策略化
opt.add_argument('--no-sandbox')                          # 解決DevToolsActivePort文件不存在的報(bào)錯(cuò)
opt.add_argument('window-size=1920x3000')                 # 指定瀏覽器分辨率
opt.add_argument('--disable-gpu')                         # 谷歌文檔提到需要加上這個(gè)屬性來規(guī)避bug
opt.add_argument('--incognito')                           # 隱身模式(無痕模式)
opt.add_argument('--disable-javascript')                  # 禁用javascript
opt.add_argument('--start-maximized')                     # 最大化運(yùn)行(全屏窗口),不設(shè)置,取元素會報(bào)錯(cuò)
opt.add_argument('--hide-scrollbars')                     # 隱藏滾動(dòng)條, 應(yīng)對一些特殊頁面
opt.add_argument('lang=en_US')                            # 設(shè)置語言
opt.add_argument('blink-settings=imagesEnabled=false')    # 不加載圖片, 提升速度
opt.add_argument('User-Agent=Mozilla/5.0 (Linux; U; Androi....')      # 設(shè)置User-Agent
opt.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  # 手動(dòng)指定使用的瀏覽器位置

2.12 截屏

找到某個(gè)標(biāo)簽后,可以通過截圖的形式保存圖片。

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Serviceservice = Service("driver/chromedriver.exe")
driver = webdriver.Chrome(service=service)driver.get('https://www.5xclass.cn')
tag = driver.find_element(By.XPATH,'/html/body/div/div[2]/div/div[2]/div/div[2]'
)# 截圖&保存
tag.screenshot("demo.png")# 截圖&圖片內(nèi)容
body = tag.screenshot_as_png
print(body)# 截圖&Base64編碼格式圖片內(nèi)容
b64_body = tag.screenshot_as_base64
print(b64_body)driver.close()

3.案例:x東搜索

import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service# 換成自己生成的代理
res = requests.get(url="https://dps.kdlapi.com/api/getdps/?secret_id=o60wwtxvs5ukaqqz18ai&num=1&signature=i6s9shfjfiogat5ijecbyfwwc5grwrzj&pt=1&format=json&sep=1")
proxy_string = res.json()['data']['proxy_list'][0]
print(f"獲取代理:{proxy_string}")service = Service("driver/chromedriver.exe")
opt = webdriver.ChromeOptions()opt.add_argument(f'--proxy-server={proxy_string}')  # 代理
opt.add_argument('blink-settings=imagesEnabled=false') # 不加載圖片opt.add_argument('--disable-infobars')
opt.add_experimental_option("excludeSwitches", ["enable-automation"])
opt.add_experimental_option('useAutomationExtension', False)driver = webdriver.Chrome(service=service, options=opt)driver.implicitly_wait(10)with open('driver/hide.js') as f:driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": f.read()})# 1.打開京東
driver.get('https://www.jd.com/')# 2.搜索框+輸入
tag = driver.find_element(By.XPATH,'//*[@id="key"]'
)
tag.send_keys("iphone手機(jī)")# 3.點(diǎn)擊搜索
tag = driver.find_element(By.XPATH,'//*[@id="search"]/div/div[2]/button'
)
tag.click()# 4.查詢列表
tag_list = driver.find_elements(By.XPATH,'//*[@id="J_goodsList"]/ul/li'
)
for tag in tag_list:# title = tag.find_element(By.XPATH, 'div/div[@class="p-name p-name-type-2"]//em').texttitle = tag.find_element(By.XPATH, 'div/div[@class="p-name p-name-type-2"]/a/em').textprint(title)driver.close()

4.案例:x麥網(wǎng)

import timeimport requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service# 換成自己生成的代理
res = requests.get(url="https://dps.kdlapi.com/api/getdps/?secret_id=o60wwtxvs5ukaqqz18ai&num=1&signature=i6s9shfjfiogat5ijecbyfwwc5grwrzj&pt=1&format=json&sep=1")
proxy_string = res.json()['data']['proxy_list'][0]
print(f"獲取代理:{proxy_string}")service = Service("driver/chromedriver.exe")
opt = webdriver.ChromeOptions()
opt.add_argument(f'--proxy-server={proxy_string}')  # 代理
opt.add_argument('blink-settings=imagesEnabled=false')
opt.add_argument('--disable-infobars')
opt.add_experimental_option("excludeSwitches", ["enable-automation"])
opt.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(service=service, options=opt)
driver.implicitly_wait(10)
with open('driver/hide.js') as f:driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": f.read()})# 1.打開大麥網(wǎng)
driver.get('https://www.damai.cn/')# 2.搜索框+輸入
tag = driver.find_element(By.XPATH,'//input[@class="input-search"]'
)
tag.send_keys("周杰倫")# 3.點(diǎn)擊搜索
tag = driver.find_element(By.XPATH,'//div[@class="btn-search"]'
)
tag.click()# 4.查詢列表
tag_list = driver.find_elements(By.XPATH,'//div[@class="search__itemlist"]//div[@class="items"]'
)
for tag in tag_list:title = tag.find_element(By.XPATH, 'div[@class="items__txt"]/div[1]/a').textprint(title)time.sleep(2000)
driver.close()

如果不加代理,訪問頻繁時(shí)會提示驗(yàn)證碼

http://www.risenshineclean.com/news/50195.html

相關(guān)文章:

  • 食品網(wǎng)站建設(shè)方案項(xiàng)目書百度推廣獲客成本大概多少
  • wordpress搜索標(biāo)簽頁seo推廣軟件排行榜前十名
  • 一家只做代購的網(wǎng)站百度網(wǎng)盤app
  • 網(wǎng)站設(shè)計(jì)主題中文成都建設(shè)網(wǎng)官網(wǎng)
  • 最近一周新聞seo廣州工作好嗎
  • 備案網(wǎng)站內(nèi)容怎么寫寧波seo關(guān)鍵詞排名
  • yourphp企業(yè)網(wǎng)站管理系統(tǒng)抖音的商業(yè)營銷手段
  • WordPress 種子搜索seozou是什么意思
  • 汝南網(wǎng)站建設(shè)邵陽做網(wǎng)站的公司
  • 優(yōu)秀的手機(jī)網(wǎng)站品牌全案策劃
  • wordpress 上傳下載seo教程免費(fèi)
  • 網(wǎng)站怎么做導(dǎo)航條南寧seo推廣服務(wù)
  • 網(wǎng)站設(shè)計(jì)制作開發(fā)網(wǎng)銷是什么工作好做嗎
  • 網(wǎng)站圖片如何優(yōu)化權(quán)威解讀當(dāng)前經(jīng)濟(jì)熱點(diǎn)問題
  • 怎么做垂直門戶網(wǎng)站百度廣告位價(jià)格
  • 玉林做網(wǎng)站優(yōu)化推廣天津百度推廣網(wǎng)絡(luò)科技公司
  • 找貨源的網(wǎng)上平臺有哪些合肥seo代理商
  • 湘潭sem優(yōu)化價(jià)格陽東網(wǎng)站seo
  • html動(dòng)態(tài)網(wǎng)站怎么做如何做個(gè)人網(wǎng)站
  • 設(shè)計(jì)網(wǎng)站排名上海網(wǎng)絡(luò)推廣外包公司
  • 成都蜀美網(wǎng)站建設(shè)網(wǎng)頁制作代碼
  • wordpress 按別名寧波企業(yè)seo服務(wù)
  • 個(gè)人有限公司注冊流程商品關(guān)鍵詞怎么優(yōu)化
  • 有哪些可以做威客的網(wǎng)站月入百萬的游戲代理
  • 網(wǎng)盤怎么做電影網(wǎng)站seo是什么職務(wù)
  • 網(wǎng)站登錄密碼保存在哪里設(shè)置免費(fèi)可用的網(wǎng)站源碼
  • 注銷網(wǎng)站和取消接入windows優(yōu)化大師是病毒嗎
  • 網(wǎng)站建設(shè)發(fā)展現(xiàn)狀網(wǎng)站seo課程
  • 怎么做亞馬遜網(wǎng)站廣州seo技術(shù)優(yōu)化網(wǎng)站seo
  • 網(wǎng)站技術(shù)介紹聊城網(wǎng)站推廣公司