欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:網(wǎng)絡(luò)爬蟲爬取動(dòng)態(tài)網(wǎng)頁(yè)數(shù)據(jù)

柚子快報(bào)邀請(qǐng)碼778899分享:網(wǎng)絡(luò)爬蟲爬取動(dòng)態(tài)網(wǎng)頁(yè)數(shù)據(jù)

http://yzkb.51969.com/

目錄

一、導(dǎo)學(xué)與指南

豆瓣單頁(yè)分析

豆瓣多頁(yè)輸出

二、理論學(xué)習(xí)

1.抓取動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)

2.Selenium和WebDriver的安裝與配置

3.Selenium的基本使用

三、小結(jié)

一、導(dǎo)學(xué)與指南

豆瓣單頁(yè)分析

import json

import requests

# 基礎(chǔ)URL 不頂事了

url_base="https://movie.douban.com/typerank?type_name=%E5%89%A7%E6%83%85&type=11&interval_id=100:90&action="

#經(jīng)過分析的 動(dòng)態(tài)內(nèi)容url 才是我們要的結(jié)果

url = "https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=20&limit=20"

headers = {

? ?'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',

? ?'Cookie': 'bid=hCw6GK7T3ko; _pk_id.100001.4cf6=e05499d4844cbfde.1697382901.; __yadk_uid=Y0K7d13OW6bvDo7Rfg4GEhEopPLKv9Vk; ll="118303"; _vwo_uuid_v2=D116B2284E0415DE6F0E8E62C0F3F1B7C|dbd80bec580d442e73cbc806b51e709a; ct=y; douban-fav-remind=1; __utmc=30149280; __utmz=30149280.1698504570.8.7.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmc=223695111; __utmz=223695111.1698504570.7.6.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; Hm_lvt_16a14f3002af32bf3a75dfe352478639=1698504600; Hm_lpvt_16a14f3002af32bf3a75dfe352478639=1698504600; ap_v=0,6.0; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1698558921%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DxUZ2pFPHLGI9UjAZ5BVOkGTqzr9mirz0hM9tSnQ4LgGBvkpYQRkEaveglj68M1Hs%26wd%3D%26eqid%3Dbd0c500a000673f800000006653d1f77%22%5D; __utma=30149280.1569954803.1697382901.1698557082.1698558922.11; __utma=223695111.1379090793.1697382901.1698557082.1698558922.10'

}

# # 1、查看url_base返回結(jié)果

# result_base = requests.get(url_base, headers=headers)

# # print(result_base.apparent_encoding) # utf-8

# # print(result_base.encoding) # utf-8

# print(result_base.text) # 搜索榜一大哥 肖申克的救贖,查為空

# 2、對(duì)比分析F12-NETWORK-FETCH/XHR中的連接

result = requests.get(url, headers=headers)

# print(result.apparent_encoding) # utf-8

# print(result.encoding) # utf-8

#print(result.text) # 獲取正常,不看了關(guān)掉

#r = json.loads() # 字符串是json、就可以用,常出現(xiàn)在正則表達(dá)式提取后

result_json = result.json() # 網(wǎng)頁(yè)是json的時(shí)候,可以直接用

#print(result_json) # 成功轉(zhuǎn)化成json,不看了關(guān)掉

movies = []

for i in result_json:

? ?title = i["title"]

? ?date = i["release_date"]

? ?types = i["types"]

? ?score = i["score"]

? ?actors = i["actors"]

? ?movie = {

? ? ? ?"title": title,

? ? ? ?"date": date,

? ? ? ?"type": types,

? ? ? ?"score": score,

? ? ? ?"actors": actors

? ?}

? ?# print(movie) # 獲取正常,不看了關(guān)掉

? ?movies.append(movie)

? ?# break # 寫循環(huán)過程,檢驗(yàn)循環(huán)取值是否正確,第一個(gè)就斷開,不看了關(guān)掉

print(movies)

豆瓣多頁(yè)輸出

import time

import pandas

import requests

# url = "https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=0&limit=20"

headers = {

? ?'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',

? ?'Cookie': 'bid=hCw6GK7T3ko; _pk_id.100001.4cf6=e05499d4844cbfde.1697382901.; __yadk_uid=Y0K7d13OW6bvDo7Rfg4GEhEopPLKv9Vk; ll="118303"; _vwo_uuid_v2=D116B2284E0415DE6F0E8E62C0F3F1B7C|dbd80bec580d442e73cbc806b51e709a; ct=y; douban-fav-remind=1; __utmc=30149280; __utmz=30149280.1698504570.8.7.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmc=223695111; __utmz=223695111.1698504570.7.6.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; Hm_lvt_16a14f3002af32bf3a75dfe352478639=1698504600; Hm_lpvt_16a14f3002af32bf3a75dfe352478639=1698504600; ap_v=0,6.0; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1698558921%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DxUZ2pFPHLGI9UjAZ5BVOkGTqzr9mirz0hM9tSnQ4LgGBvkpYQRkEaveglj68M1Hs%26wd%3D%26eqid%3Dbd0c500a000673f800000006653d1f77%22%5D; __utma=30149280.1569954803.1697382901.1698557082.1698558922.11; __utma=223695111.1379090793.1697382901.1698557082.1698558922.10'

}

movies = []

urls = []

count = 0

#

# 獲取多個(gè)動(dòng)態(tài)url 4*20個(gè)

for i in range(0, 4):

? ?url = "https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start={}&limit=20".format(

? ? ? ?i * 20) # format函數(shù),能替代掉一整個(gè)花括號(hào) ? {}

? ?print(url)

? ?urls.append(url)

# 多個(gè)動(dòng)態(tài)url里提取各自的json

for urli in urls: ?# 4次找url

? ?result = requests.get(urli, headers=headers)

? ?#print(result.text)

? ?result_json = result.json()

? ?time.sleep(2) ?# 注意做時(shí)間間隔,減少反爬機(jī)制響應(yīng)

? ?for i in result_json: ?# 每次url找20個(gè)json

? ? ? ?title = i["title"]

? ? ? ?date = i["release_date"]

? ? ? ?types = i["types"]

? ? ? ?score = i["score"]

? ? ? ?actors = i["actors"]

? ? ? ?movie = {

? ? ? ? ? ?"title": title,

? ? ? ? ? ?"date": date,

? ? ? ? ? ?"type": types,

? ? ? ? ? ?"score": score,

? ? ? ? ? ?"actors": actors

? ? ? ?}

? ? ? ?# print(movie) # 獲取正常,不看了關(guān)掉

? ? ? ?movies.append(movie)

? ? ? ?# break # 寫循環(huán)過程,檢驗(yàn)循環(huán)取值是否正確,第一個(gè)就斷開,不看了關(guān)掉

? ?count = count + 1

? ?print(f"第{count}頁(yè)獲取成功")

# print(movies) # 獲取正常,不看了關(guān)掉

# 整合表頭和表格數(shù)據(jù)構(gòu)成dataframe表格對(duì)象

df = pandas.DataFrame(movies, columns=["title", "date", "type", "score", "actors"])

# print(df)

df.to_excel('豆瓣劇情片排行榜.xlsx')

二、理論學(xué)習(xí)

在介紹如何爬取動(dòng)態(tài)網(wǎng)頁(yè)之前,我們先來了解一下什么是動(dòng)態(tài)網(wǎng)頁(yè)。動(dòng)態(tài)網(wǎng)頁(yè)指的是通過JavaScript等技術(shù)在客戶端動(dòng)態(tài)生成HTML代碼的網(wǎng)頁(yè)。與之相對(duì)應(yīng)的是靜態(tài)網(wǎng)頁(yè),靜態(tài)網(wǎng)頁(yè)是指在服務(wù)器端生成HTML代碼并直接返回給客戶端的網(wǎng)頁(yè)。

1.抓取動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)

對(duì)于動(dòng)態(tài)網(wǎng)頁(yè)的數(shù)據(jù)可以直接使用模擬瀏覽器運(yùn)行的方式進(jìn)行實(shí)現(xiàn),這樣做就可以不用管網(wǎng)頁(yè)內(nèi)部是如何使用JavaScript渲染頁(yè)面的,也不用管Ajax請(qǐng)求中到底有沒有加密參數(shù),在瀏覽器中看到是什么樣的內(nèi)容,抓取的結(jié)果便是什么樣的內(nèi)容。Python中提供了許多模擬瀏覽器運(yùn)行的庫(kù),包括Selenium 、Splash、PyAutoGUI等。

Selenium

Selenium是一款用于Web應(yīng)用程序測(cè)試的工具,也可以用來爬取動(dòng)態(tài)網(wǎng)頁(yè)。Selenium可以模擬瀏覽器的行為,執(zhí)行其中的JavaScript代碼,并獲取生成的HTML文檔。

Splash

Splash 用于JavaScript渲染服務(wù),是一個(gè)帶有HTTP API的輕量級(jí) Web瀏覽器,而且對(duì)接了Twisted(事件驅(qū)動(dòng)型的網(wǎng)絡(luò)引擎)和Qt5(進(jìn)行Qt C++軟件開發(fā)基本框架的最新版本)。Splash 實(shí)現(xiàn)了以下功能。

采用異步方式并行處理多個(gè)網(wǎng)頁(yè)渲染過程。

獲取渲染后頁(yè)面的源代碼或截圖。

通過關(guān)閉圖像或使用Adblock Plus 規(guī)則加快頁(yè)面渲染速度??蓤?zhí)行特定的JavaScript腳本。

可以通過Lua腳本控制頁(yè)面的渲染過程。

以HAR ( HTTP Archive )格式呈現(xiàn)獲取渲染的詳細(xì)過程。

PyAutoGUI

PyAutoGUI是一個(gè)用于自動(dòng)化測(cè)試的庫(kù),它可以使用Python程序控制鼠標(biāo)和鍵盤自動(dòng)與其他應(yīng)用程序交互,支持 Windows .macOS和Linux 等平臺(tái)。PyAutoGUI具有以下一些特點(diǎn)。

移動(dòng)鼠標(biāo)并在其他應(yīng)用程序的窗口中單擊或鍵入文本。向應(yīng)用程序發(fā)送按鍵,比如填寫表格。

截取屏幕截圖并發(fā)送一張圖像,在屏幕上找到它。

定位應(yīng)用程序的窗口,并移動(dòng)、調(diào)整大小、最大化、最小化或關(guān)閉該窗口(目前僅適用于Windows ) 。

2.Selenium和WebDriver的安裝與配置

在使用Selenium抓取動(dòng)態(tài)網(wǎng)頁(yè)的數(shù)據(jù)之前,我們需要先在計(jì)算機(jī)上安裝Selenium,以及與Selenium一起配合使用的瀏覽器驅(qū)動(dòng)WebDriver。為了避免后續(xù)在網(wǎng)絡(luò)爬蟲程序中重復(fù)指定WebDriver的執(zhí)行路徑,我們需要為WebDriver配置環(huán)境變量。

Selenium的安裝

Selenium的安裝方式非常簡(jiǎn)單,可以直接使用pip命令安裝,具體的安裝命令如下。

pip install selenium==3.141.0

若命令行窗口中出現(xiàn)Successfully installed selenium的提示信息,說明成功安裝了Selenium庫(kù)。

WebDriber的安裝

每種瀏覽都有一個(gè)特定的WebDriver。WebDriver稱為驅(qū)動(dòng)程序,通過驅(qū)動(dòng)程序?qū)崿F(xiàn)Selenium與瀏覽器之間的交互。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

注意:不同版本的瀏覽器驅(qū)動(dòng)程序支持的瀏覽器版本也不同,在下載瀏覽器的驅(qū)動(dòng)程序之前,需要先查看當(dāng)前;瀏覽器的版本號(hào)。

將WebDriver配置到系統(tǒng)環(huán)境變量后,程序中再次使用WebDriver時(shí),就不需要重復(fù)指定WebDriver的執(zhí)行路徑了。

3.Selenium的基本使用

WebDriver類的常用屬性和方法

為模仿用戶真實(shí)操作瀏覽器的過程, webdriver模塊的WebDriver類(表示瀏覽器)中提供了一些執(zhí)行諸如打開瀏覽器、關(guān)閉瀏覽器、刷新頁(yè)面、前進(jìn)、后退等入門操作的方法或?qū)傩?。WebDriver類的常用屬性如下所示。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

為模仿用戶真實(shí)操作瀏覽器的過程, webdriver模塊的WebDriver類(表示瀏覽器)中提供了一些執(zhí)行諸如打開瀏覽器、關(guān)閉瀏覽器、刷新頁(yè)面、前進(jìn)、后退等入門操作的方法或?qū)傩浴ebDriver類的常用方法如下所示。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

定位元素

Selenium的 WebDriver類中提供了定位元素的方法,這些方法按照元素的數(shù)量可以分為定位單個(gè)元素和定位多個(gè)元素。WebDriver類中定位單個(gè)元素的方法如下所示。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

鼠標(biāo)操作

常用的鼠標(biāo)操作有雙擊、右擊、拖曳、按住不動(dòng)等,它們都封裝為ActionChains類的方法。ActionChains類中常用的鼠標(biāo)操作方法如下所示。

? ? ? ? ? ? ? ? ? ? ? ??

下拉列表框操作

Selenium中,Select類專門用于處理下拉框,該類提供了以下幾個(gè)方法從下拉框中選擇選項(xiàng)或取消選項(xiàng)。

select_by_index()∶根據(jù)索引選擇下拉框中的選項(xiàng),且索引是從О開始的。

select_by_value()∶根據(jù)值選擇下拉框中的選項(xiàng),這里的值是

select_by_visible_text():根據(jù)文字選擇下拉框中的選項(xiàng),這里的文字是

彈出框處理

Selenium中的Alert類用于處理這3類彈出框,不過在處理彈框之前需要先使用WebDriver類對(duì)象的switch_to.alert選中彈出框。

要想處理警告框, Selenium 的Alert類中提供了text屬性和accept()方法,其中text屬性用于獲取警告框中的警告消息; accept()方法用于單擊確定按鈕。

要想處理確認(rèn)框,Selenium的Alert類中提供了text屬性、 accept()方法和dismiss()方法,其中text屬性和accept()方法與警告框中的作用相同, dismiss)方法用于單擊“取消”按鈕。

要想處理提示框,Selenium的Alert類中提供了text屬性、 accept()方法、 dismiss)方法和send_keys()方法,前三個(gè)屬性或方法的作用與確認(rèn)框中的作用相同, send_keys()方法用于接收用戶輸入的內(nèi)容。

頁(yè)面切換

在瀏覽器中可以同時(shí)打開多個(gè)窗口,但每次只能顯示一個(gè)窗口的頁(yè)面。若希望顯示其他窗口的頁(yè)面,則需要單擊窗口上方的選項(xiàng)卡,達(dá)到頁(yè)面切換的效果。

Selenium通過窗口句柄來區(qū)分瀏覽器的窗口,它為每個(gè)瀏覽器窗口分配了唯一句柄ID,通過這個(gè)句柄ID可以切換到指定的頁(yè)面。Selenium的 WebDriver類中提供了一些操作窗口句柄的屬性或方法。

window_handles:獲取所有窗口的句柄ID。

current_window_handle:獲取當(dāng)前窗口的句柄ID。

switch_to.window()∶跳轉(zhuǎn)到指定窗口。

頁(yè)面等待

Selenium提供了兩種實(shí)現(xiàn)頁(yè)面等待的方式,分別是隱式等待和顯式等待,其中隱式等待是等待特定的時(shí)間,顯式等待是指定某一條件,直到這個(gè)條件成立后才繼續(xù)執(zhí)行。

隱式等待

隱式等待是設(shè)置一個(gè)全局最大等待時(shí)間,單位為秒( s )。隱式等待可以使用WebDriver類的implicitly_wait()方法實(shí)現(xiàn),它使得 WebDriver類的對(duì)象在定位元素時(shí),每隔一段特定的時(shí)間就會(huì)輪詢一次節(jié)點(diǎn)樹,直到元素被發(fā)現(xiàn)為止。

implicitly_wait(self, time_to_wait)

implicitly_wait()方法中只包含一個(gè)參數(shù)time_to_wait,該參數(shù)表示等待的時(shí)長(zhǎng),單位為秒數(shù)。需要注意的是,隱式等待的時(shí)間一經(jīng)設(shè)置,這個(gè)設(shè)置就會(huì)在WebDriver類對(duì)象的整個(gè)生命周期起作用。

顯式等待

顯式等待是設(shè)定等待條件并設(shè)置最長(zhǎng)等待時(shí)間,如果超出等待時(shí)間還沒有找到元素,那么便會(huì)拋出異常,在Selenium中,webdriver.support.ui模塊的WebDriverWait類用于處理顯式等待。

WebDriverWait(driver, timeout, poll_frequency= POLL_FREQUENCY,ignored_exceptions=None)

driver : WebDriver的驅(qū)動(dòng)程序。

timeout:最長(zhǎng)超時(shí)時(shí)間,默認(rèn)以秒為單位。

poll_frequency∶休眠的間隔時(shí)間,默認(rèn)為0.5秒。

ignore_exceptions:超時(shí)后的異常信息,默認(rèn)情況下拋出NoSuchElementException異常。

WebDriverWait類的對(duì)象通常和until()或until_not()方法配合使用,這兩個(gè)方法的作用相同,都用于在指定的時(shí)間內(nèi)調(diào)用WebDriver對(duì)象定位元素,直到返回值不為False為止。until() 或until_not()方法有兩個(gè)參數(shù)method和message ,其中參數(shù)method表示可調(diào)用的WebDriver對(duì)象;message表示設(shè)置的異常提示信息。

三、小結(jié)

以上是小編對(duì)網(wǎng)絡(luò)爬蟲爬取動(dòng)態(tài)網(wǎng)頁(yè)數(shù)據(jù)的一些總結(jié),希望對(duì)網(wǎng)絡(luò)爬蟲爬取動(dòng)態(tài)網(wǎng)頁(yè)數(shù)據(jù)的初學(xué)者有所幫助,有什么不足的地方,歡迎評(píng)論區(qū)留言哦,小編會(huì)虛心請(qǐng)教、彌補(bǔ)不足的,希望大家多多包容,最后祝大家學(xué)有所成,天天開心!

柚子快報(bào)邀請(qǐng)碼778899分享:網(wǎng)絡(luò)爬蟲爬取動(dòng)態(tài)網(wǎng)頁(yè)數(shù)據(jù)

http://yzkb.51969.com/

相關(guān)文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18830575.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄