日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Day6作业

發布時間:2023/12/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Day6作业 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
from selenium import webdriver import time driver=webdriver.Chrome() try:driver.implicitly_wait(5)driver.get('https://doc.scrapy.org/en/latest/_static/selectors-sample1.html')#通過Xpath查html = driver.find_element_by_xpath('/html')# html = driver.find_element_by_xpath('/html') #報錯print(html.tag_name)time.sleep(10)#//從根節點開始查找任意一個節點div=driver.find_element_by_xpath('//div')print(div.tag_name)#@#查找id為images的div節點div = driver.find_element_by_xpath('//div[@id="images"]')print(div.tag_name)print(div.text)# #找到一個a節點a = div.find_element_by_xpath('//a')print(a.tag_name)# #找到所有a節點a_s = div.find_element_by_xpath('//a')print(a_s)# # #找到第一個a節點的href屬性# get.attribute:獲取節點中某個屬性a = div.find_element_by_xpath('//a').get_attribute('href')# print(a)finally:driver.close() from selenium import webdriver import time driver=webdriver.Chrome() try:driver.implicitly_wait(5)driver.get('https://doc.scrapy.org/en/latest/_static/selectors-sample1.html')#通過Xpath查html = driver.find_element_by_xpath('/html')# html = driver.find_element_by_xpath('/html') #報錯print(html.tag_name)time.sleep(10)#//從根節點開始查找任意一個節點div=driver.find_element_by_xpath('//div')print(div.tag_name)#@#查找id為images的div節點div = driver.find_element_by_xpath('//div[@id="images"]')print(div.tag_name)print(div.text)# #找到一個a節點a = div.find_element_by_xpath('//a')print(a.tag_name)# #找到所有a節點a_s = div.find_element_by_xpath('//a')print(a_s)# # #找到第一個a節點的href屬性# get.attribute:獲取節點中某個屬性a = div.find_element_by_xpath('//a').get_attribute('href')# print(a)finally:driver.close() ''' 獲取cookies ''' from selenium import webdriver import time driver = webdriver.Chrome() try:driver.implicitly_wait(10)driver.get('https://www.zhihu.com/explore')print(driver.get_cookies())time.sleep(10) finally:driver.close() ''' 選項卡(未寫) ''' #選項卡管理:切換選項卡,有js的方式windows.open,有windows快捷鍵:ctrl+t等,最通用的就是js的方式 import time from selenium import webdriverbrowser=webdriver.Chrome() try:browser.get('https://www.baidu.com') browser.execute_script('window.open()')print(browser.window_handles) #獲取所有的選項卡 browser.switch_to_window(browser.window_handles[1]) browser.get('https://www.taobao.com') time.sleep(10) browser.switch_to_window(browser.window_handles[0]) browser.get('https://www.sina.com.cn') browser.close() ''' ActionChas動作鏈 ''' from selenium import webdriver from selenium.webdriver import ActionChains import time driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') try:driver.switch_to.frame('iframeResult')draggable = driver.find_element_by_id('draggable')droppable = driver.find_element_by_id('droppable')actions = ActionChains(driver)source = draggable.location['x']target = droppable.location['x']print(source,target)distance = target-sourceprint(distance)ActionChains(driver).click_and_hold(draggable).perform()s=0while s<distance:ActionChains(driver).move_by_offset(xoffset=2,yoffset=0).perform()s+=2ActionChains(driver).release().perform()time.sleep(10) finally:driver.close() ''' 前進、后退 ''' from selenium import webdriver import timedriver = webdriver.Chrome()try:driver.implicitly_wait(10)driver.get('https://www.jd.com/')driver.get('https://www.baidu.com/')driver.get('https://www.cnblogs.com/')time.sleep(2)# 回退操作 driver.back()time.sleep(1)# 前進操作 driver.forward()time.sleep(1)driver.back()time.sleep(10)finally:driver.close() from selenium import webdriver from selenium.webdriver import ChromeOptions import time r''' 步驟:1、打開文件的查看,顯示隱藏文件2、找到C:\Users\administortra\AppData\Local\Google\Chrome\User Data刪除Default文件3、重新打開瀏覽器,并登陸百度賬號- 此時會創建一個新的Default緩存文件 ''' # 獲取options對象,參數對象 options = ChromeOptions()# 獲取cookies保存路徑 # 'C:\Users\administortra\AppData\Local\Google\Chrome\User Data' profile_directory = r'--user-data-dir=C:\Users\85265\AppData\Local\Google\Chrome\User Data'# 添加用戶信息目錄 options.add_argument(profile_directory)# 把參數加載到當前驅動中 chrome_options默認參數,用來接收options對象 driver = webdriver.Chrome(chrome_options=options)try:driver.implicitly_wait(10)driver.get('https://www.baidu.com/')'''BDUSS:*****'''# 添加用戶cookies信息# name、value必須小寫driver.add_cookie({"name": "BDUSS", "value": "G9qSDlTSXI4eGkzb3lHcH1dHpPVWJEVjlieXdkaXBzbmhMbWw0QzlkSUFBQAAAAAAAAAAAEAAAB9YymlysfLrbChtcS5ysrCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKVTCF2lUwhdS"})# 刷新操作 driver.refresh()time.sleep(10)finally:driver.close()

1、爬取一頁京東商品

from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver = webdriver.Chrome() try:driver.implicitly_wait(10)# 往京東主頁發送請求driver.get('http://www.jd.com/')# 輸入商品名稱并回車繼續input_tag = driver.find_element_by_id('key')input_tag.send_keys('華為手機')input_tag.send_keys(Keys.ENTER)# 查找所有div# good_div= driver.find_element_by_id('J_goodsList')good_list = driver.find_elements_by_class_name('gl-item')for good in good_list:# 根據屬性選擇器查找good_url = good.find_element_by_css_selector('.p-img a').get_attribute('href')# 商品名稱good_name = good.find_element_by_css_selector('.p-name em').text.replace("\n","--")# 商品價格good_price = good.find_element_by_class_name('p-price').text.replace("\n",":")# 評價人數good_commit = good.find_element_by_class_name('p-commit').text.replace("\n"," ")# 商品商家good_form = good.find_element_by_class_name('J_im_icon').text.replace("\n"," ")good_content=f'''商品鏈接:{good_url}商品名稱:{good_name}商品價格:{good_price}評價人數:{good_commit}商品商家:{good_form}\n'''print(good_content)with open('jd.txt','a',encoding='utf-8')as f:f.write(good_content)time.sleep(20) finally:driver.close()

2、爬取多頁商品信息

from selenium import webdriver from selenium.webdriver.common.keys import Keys import time def get_good(driver):try:js_code='''window.scrollTo(0,5000);'''driver.execute_script(js_code)time.sleep(2)# 查找所有div# good_div= driver.find_element_by_id('J_goodsList')good_list = driver.find_elements_by_class_name('gl-item')n=1for good in good_list:# 根據屬性選擇器查找# 商品鏈接good_url = good.find_element_by_css_selector('.p-img a').get_attribute('href')# 商品名稱good_name = good.find_element_by_css_selector('.p-name em').text.replace("\n","--")# 商品價格good_price = good.find_element_by_class_name('p-price').text.replace("\n",":")# 評價人數good_commit = good.find_element_by_class_name('p-commit').text.replace("\n"," ")# 商品商家good_form = good.find_element_by_class_name('J_im_icon').text.replace("\n"," ")good_content=f'''商品鏈接:{good_url}商品名稱:{good_name}商品價格:{good_price}評價人數:{good_commit}商品商家:{good_form}\n'''print(good_content)with open('jd.txt','a',encoding='utf-8')as f:f.write(good_content)next_tag = driver.find_element_by_class_name('pn-next')next_tag.click()time.sleep(2)get_good(driver)time.sleep(10)finally:driver.close() if __name__ == '__main__':good_name = input('請輸入爬取商品信息:').strip()driver = webdriver.Chrome()driver.implicitly_wait(10)# 往京東主頁發送請求driver.get('http://www.jd.com/')# 輸入商品名稱并回車繼續input_tag = driver.find_element_by_id('key')input_tag.send_keys(good_name)input_tag.send_keys(Keys.ENTER)time.sleep(2)get_good(driver)

?破解滑動驗證:

''' 破解極驗滑動驗證 博客園登錄url:https://account.cnblogs.com/signin?returnUrl=https%3A%2F%2Fwww.cnblogs.com%2F 1、輸入用戶名與密碼,并點擊登錄 2、彈出滑動驗證,獲取有缺口與完整的圖片 3、通過像素點進行比對,獲取滑動位移距離 4、模擬人的行為軌跡 5、開始滑動 ''' from selenium import webdriver # 用來驅動瀏覽器的 from selenium.webdriver import ActionChains # 破解滑動驗證碼的時候用的 可以拖動圖片 import time from PIL import Image # pip3 install pillow import randomoption = webdriver.ChromeOptions() option.add_argument('disable-infobars')driver = webdriver.Chrome(chrome_options=option)def get_snap(driver):# selenium自帶的截圖網頁全屏圖片driver.save_screenshot('snap.png')img = driver.find_element_by_class_name('geetest_canvas_img')left = img.location['x']upper = img.location['y']right = left + img.size['width']lower = upper + img.size['height']# print(left, upper, right, lower)img_obj = Image.open('snap.png')# 對屏幕進行截取,獲取滑動驗證圖片image = img_obj.crop((left, upper, right, lower))return imagedef get_image1(driver):time.sleep(0.2)js_code = '''var x = document.getElementsByClassName('geetest_canvas_fullbg')[0].style.display="block";console.log(x)'''time.sleep(1)driver.execute_script(js_code)# 截取圖片img_obj = get_snap(driver)return img_objdef get_image2(driver):time.sleep(0.2)js_code = '''var x = document.getElementsByClassName('geetest_canvas_fullbg')[0].style.display="none";console.log(x)'''driver.execute_script(js_code)time.sleep(1)# 截取圖片img_obj = get_snap(driver)return img_objdef get_distance(image1, image2):# 初始值start = 60# 滑塊色差color_num = 60for x in range(start, image1.size[0]):for y in range(image1.size[1]):rgb1 = image1.load()[x, y]rgb2 = image2.load()[x, y]r = abs(rgb1[0] - rgb2[0])g = abs(rgb1[1] - rgb2[1])b = abs(rgb1[2] - rgb2[2])if not (r < color_num and g < color_num and b < color_num):return x - 7def get_stacks(distance):distance += 20'''勻加速\減速運行v = v0 + a * t位移:s = v * t + 0.5 * a * (t**2)'''# 初速度v0 = 0# 加減速度列表a_list = [3, 4, 5]# 時間t = 0.2# 初始位置s = 0# 向前滑動軌跡forward_stacks = []mid = distance * 3 / 5while s < distance:if s < mid:a = a_list[random.randint(0, 2)]else:a = -a_list[random.randint(0, 2)]v = v0stack = v * t + 0.5 * a * (t ** 2)# 每次拿到的位移stack = round(stack)s += stackv0 = v + a * tforward_stacks.append(stack)back_stacks = [-1, -1, -2, -3, -2, -3, -2, -2, -3, -1]return {'forward_stacks': forward_stacks, 'back_stacks': back_stacks}def main():try:driver.get('https://passport.cnblogs.com/user/signin')driver.implicitly_wait(5)# 1.輸入用戶名與密碼,點擊登錄username = driver.find_element_by_id('LoginName')password = driver.find_element_by_id('Password')login_button = driver.find_element_by_class_name('ladda-label')time.sleep(1)username.send_keys('_tank_')time.sleep(1)password.send_keys('k46709394.')# 這里需要等待賬號密碼輸入完畢后再點擊登錄按鈕,否則的不彈框time.sleep(1)login_button.click()# time.sleep(3)# 2.點擊滑動驗證按鈕,獲取圖片geetest_button = driver.find_element_by_class_name('geetest_slider_button')geetest_button.click()time.sleep(0.2)# 3.針對完整的圖片進行截取image1 = get_image1(driver)# 4.針對有缺口的圖片進行截取image2 = get_image2(driver)# 5.對比兩張圖片,獲取滑動距離distance = get_distance(image1, image2)# 6.模擬人為滑動軌跡stacks = get_stacks(distance)# 7.根據滑動軌跡進行滑動forward_stacks = stacks['forward_stacks']back_stacks = stacks['back_stacks']slider_button = driver.find_element_by_class_name('geetest_slider_button')time.sleep(0.2)ActionChains(driver).click_and_hold(slider_button).perform()time.sleep(0.2)for forward_stack in forward_stacks:ActionChains(driver).move_by_offset(xoffset=forward_stack, yoffset=0).perform()time.sleep(0.1)for back_stack in back_stacks:ActionChains(driver).move_by_offset(xoffset=back_stack, yoffset=0).perform()time.sleep(0.1)time.sleep(0.2)ActionChains(driver).move_by_offset(xoffset=5, yoffset=0).perform()ActionChains(driver).move_by_offset(xoffset=-5, yoffset=0).perform()ActionChains(driver).release().perform()time.sleep(50)finally:driver.close()if __name__ == '__main__':main()

?

轉載于:https://www.cnblogs.com/wjlblog/p/11049037.html

總結

以上是生活随笔為你收集整理的Day6作业的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。