日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python实现刷问卷星份数(面向对象)

發布時間:2023/12/14 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现刷问卷星份数(面向对象) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、前言

二、模塊準備

①Sojump.py需要的模塊/包

②具體問卷.py需要的模塊/包

三、具體代碼講解

3.1? Sojump.py

功能1 計數器counter()

功能2 偽裝selenium

更新知識 selenium的更新

01 danxuan()→單選題(隨機選擇)

02 fixed_danxuan()→單選題(只選擇某個選項)

03 excluded_danxuan()→單選題(排除一個或一些選項)

04 range_danxuan()→單選題(在m到n范圍內單選)

05 restrictive_danxuan()→單選題(在某些選項中選擇)

06 textinput_danxuan()→單選題(選項中允許填空)

07 duoxuan()→多選題(隨機選擇)

08 fixed_duoxuan()→多選題(只選擇某些選項)

09?excluded_duoxuan()→多選題(排除一個或一些選項)

10 restrictive_duoxuan()→多選題(在某些選項中多選)

11?range_duoxuan()→多選題(在m到n范圍內的多選)

12?textinput_duoxuan()→多選題(選項中允許填空)

13?text()→文本題

隨機所在城市的選擇? random_city_selection()

限制所在城市的選擇? restrictive_city_selection()

提交按鈕? submit()

★全部代碼展示★

3.2? 具體問卷.py

★全部代碼展示★

具體代碼講解

四、總結


一、前言

? ? ? ? 筆者之前也寫過python實現問卷星刷份數的代碼與文章(如下)

隔壁寢室刷問卷刷瘋了https://blog.csdn.net/knighthood2001/article/details/120175929?spm=1001.2014.3001.5502python自動化------問卷星刷問卷3.0版本https://blog.csdn.net/knighthood2001/article/details/120175929?spm=1001.2014.3001.5502? ? ? ?

????????不過之前寫的屬于面向過程版本,它有很大的局限性,即根據不同的問卷需要按照邏輯步驟寫相應的代碼,代碼量非常繁瑣,并且很多代碼都是重復的,因此如果后續查看與更改起來也非麻煩;此外,由于距離上一次寫關于問卷星的時間較長,問卷星頁面元素定位可能發生了更改,需要重新獲取相應的元素定位,如xpath、css selector;再加上由于selenium的升級,之前定位元素的方法被棄用,需要改變之前寫的代碼。

????????以上三個原因,使得筆者重新對之前的代碼進行增刪改查,最終將之前的面向過程版本寫成了面向對象版本。通過將一個個的功能封裝成函數,在使用時只需要調用即可。代碼量大大降低,且無需重復造車輪,對于后續檢查與更改來說也比較輕松。

二、模塊準備

????????首先創建兩個python文件,Sojump的翻譯就是問卷星,通過在Sojump.py文件中編寫主要函數,在具體問卷.py文件中通過導入Sojump,在編寫該問卷的代碼,最終實現刷份數。

①Sojump.py需要的模塊/包

import random from selenium import webdriver import time from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select

②具體問卷.py需要的模塊/包

import random import Sojump from Sojump import Wenjuanxing import schedule as schedule

三、具體代碼講解

3.1? Sojump.py

!這里的內容是重中之重!

①元素定位分析

xpath

//*[@id="divquestion1"]/ul/li[1]

? ? ? ? 上述表示的是問卷星問卷第一題的第1個選項

//*[@id="divquestion1"]/ul/li[2]

? ? ? ? 上述表示的是問卷星問卷第一題的第2個選項

????????經觀察,可以得出問卷星問題的通用xpath,如下

# 選項的xpath base_xpaths = '//*[@id="divquestion{}"]/ul/li'

css_selector?

????????大致思路同上,得到問卷星選項的通用css_selector,如下

# 選項的css_selector base_css_selectors = '#divquestion{} > ul > li:nth-child({})'

允許填空選項的css_selector?

????????有些問題的選項允許填空,其通用css_selector?如下

# 允許填空選項的css_selector input_css_selectors = '#divquestion{} > ul > li:nth-child({}) > input.underline'

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意:筆者發現問卷星有兩類問卷,其對應的元素定位有所不同。

具體區分如下(筆者也是在寫完該文章后突然發現,大家可以自行去試試你的問卷元素定位屬于哪一類,第二種由于沒有相應的問卷,可能xpath和css_selector定位會發生錯誤,不過這不是重點,大家只需找到并更改即可)

如果大家發現無法刷問卷,可能就是元素定位出現了問題?

'''適用的可能是問卷星網頁無法右鍵,只能通過F12或者 ctrl+shift+i快捷鍵進入開發者工具的問卷,并且打開開發者工具后會顯示已在調試程序中暫停''' # 選項的xpath base_xpaths = '//*[@id="divquestion{}"]/ul/li' # 選項的css_selector base_css_selectors = '#divquestion{} > ul > li:nth-child({})' # 允許填空選項的css_selector input_css_selectors = '#divquestion{} > ul > li:nth-child({}) > input.underline''''適用的可能是除了上面的情況的問卷星''' # 選項的xpath base_xpaths = '//*[@id="div{}"]/div/div' # 選項的css_selector base_css_selectors = 'div{} > div.ui-controlgroup.column{} > div.ui-checkbox.checked' # 允許填空選項的css_selector input_css_selectors = 'tqq{}_{}'

②創建類并初始化

class Wenjuanxing(object):# 初始化def __init__(self, url):self.url = url

????????創建一個Wenjuanxing()的類,并初始化url


接下來就開始編寫函數了

功能1 計數器counter()

在類外面先定義一個count=0,然后使用下面的counter()函數,用以計數是第幾次運行代碼,刷了幾次問卷。

# 計數器def counter(self):global countcount += 1w = print("第{}次運行".format(count))return w

功能2 偽裝selenium

????????需要進行偽裝的原因:筆者發現是因為問卷星的網頁有反爬機制,它會檢查你是不是通過selenium訪問網頁的。大多數情況下,檢測基本原理是檢測當前瀏覽器窗口下的window.navigator對象是否包含webdriver這個屬性。因為在正常使用瀏覽器的情況下,這個屬性是undefined,然而一旦我們使用了selenium,selenium會給window.navigator設置webdriver屬性。很多網站就通過JS判斷如果webdrive 屬性存在,那就直接屏蔽。以下代碼可以在每次頁面加載之前就不會給window.navigator設置webdriver屬性,從而能夠通過智能檢測。

詳情可以看筆者寫的之前的文章

隔壁寢室刷問卷刷瘋了https://blog.csdn.net/knighthood2001/article/details/120175929?spm=1001.2014.3001.5502

# 偽裝seleniumdef weizhuang_selenium(self):# 躲避智能檢測self.option = webdriver.ChromeOptions()self.option.add_experimental_option('excludeSwitches', ['enable-automation'])self.option.add_experimental_option('useAutomationExtension', False)self.driver = webdriver.Chrome(options=self.option)self.driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})self.driver.get(self.url)

更新知識 selenium的更新

? ? ? ? chromedriver的知識我就不細說了,主要講的是selenium更新后,元素定位的方法發生改變。

以前:

????????模塊

from selenium import webdriver

????????定位元素方法?

# 1、通過ID進行定位 find_element_by_id('id') # 2、通過名字進行定位 find_element_by_name('name') # 3、通過類名進行元素定位 find_elements_by_class_name('class_name') # 4、通過元素標簽屬性 find_element_by_tag_name('tag_name') # 5、 通過頁面文本信息 find_element_by_link_text('link_text') # 6、通過模糊文本信息 find_element_by_partial_link_text('partial_link_text') # 7、通過查找元素路徑 find_element_by_xpath('xpath') # 8、通過頁面上的css元素進行定位 find_element_by_css_selector('css_selector')

更新后:

????????需要在導入一個模塊

from selenium import webdriver from selenium.webdriver.common.by import By

????????定位元素方法?

driver.find_element(by=By.ID, value='ID') driver.find_element(by=By.NAME, value='NAME') driver.find_element(by=By.CLASS_NAME, value='CLASS_NAME') driver.find_element(by=By.TAG_NAME, value='TAG_NAME') driver.find_element(by=By.LINK_TEXT, value='LINK_TEXT') driver.find_element(by=By.PARTIAL_LINK_TEXT, value='PARTIAL_LINK_TEXT') driver.find_element(by=By.XPATH, value='XPATH') driver.find_element(by=By.CSS_SELECTOR, value='CSS_SELECTOR')

01 danxuan()→單選題(隨機選擇)

# 01 單選題(隨機選擇)def danxuan(self, i):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)b = random.randint(1, len(a))self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, b)).click()

講解:i表示題號

首先使用全局變量并通過format(i)函數給出具體的題號

a表示定位題目所對應的選項

len(a)表示題目所對應的選項個數

b表示隨機生成選項個數以內的一個數

最后定位該選項并點擊,完成隨機選擇
?

self.driver.find_element(by=By.CSS_SELECTOR,value='#divquestion{} > ul > li:nth-child({}) > label'.format(i, b)).click()

注意:在上面的代碼,由于筆者在之前的文章中使用過xpath定位,不過出現了定位不到的現象,所以我使用css_selector進行定位元素。



02 fixed_danxuan()→單選題(只選擇某個選項)

# 02 單選題(只選擇某個選項)def fixed_danxuan(self, i, b):self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, b)).click()

講解:b表示需要選擇的選項在該題目選項中的位置

03 excluded_danxuan()→單選題(排除一個或一些選項)

# 03 單選題(排除一個或一些選項)def excluded_danxuan(self, i, *args):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)c = []# y是計算arg的個數,方便計算還剩幾個選項y = 0for x in range(1, len(a) + 1):c.append(x)for arg in args:y += 1c.remove(arg)d = random.choice(c)self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, d)).click()

思路:是創建一個列表c,然后將選項個數添加進列表,之后根據輸入的變量,在列表中逐個去除,最終在剩下的列表中隨機選擇一個,進行定位與點擊。

04 range_danxuan()→單選題(在m到n范圍內單選)

# 04 單選題(在m到n范圍內單選)def range_danxuan(self, i, m, n):x = random.randint(m, n)self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, x)).click()

思路:是用random.randint(m,n)函數返回一個m到n范圍內的隨機整數

05 restrictive_danxuan()→單選題(在某些選項中選擇)

# 05 單選題(在某些選項中選擇)如6個選項,在1235中單選def restrictive_danxuan(self, i, *args):m = []for arg in args:m.append(arg)n = random.choice(m)self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, n)).click()

思路:將所輸入的參數存入到列表中,然后使用random.choice()函數隨機選擇其中的一個數

06 textinput_danxuan()→單選題(選項中允許填空)

# 06 單選題(選項中允許填空)def textinput_danxuan(self, i, c, wenzi):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)b = random.randint(1, len(a))self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, b)).click()if c == b:time.sleep(0.2)self.driver.find_element(by=By.CSS_SELECTOR,value=input_css_selectors.format(i, c)).send_keys(wenzi)

?思路:首先選擇某個選項,如果該選項和自己輸入的c相同,即可再輸入文字。

07 duoxuan()→多選題(隨機選擇)

# 07 多選題(隨機選擇)def duoxuan(self, i):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)b = len(a)# m中存放選項m = []for x in range(1, b + 1):m.append(x)c = random.randint(1, b)n = random.sample(m, c)for o in n:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, o)).click()

思路:列表m中存放選項;c表示隨機生成一個選項以內的數字,即多選題要選擇選項的個數;n表示從列表m中隨機選擇c個個數,返回類型為列表,然后經過遍歷,實現多選題的多個選項的選擇。

08 fixed_duoxuan()→多選題(只選擇某些選項)

# 08 多選題(只選擇某些選項)def fixed_duoxuan(self, i, *args):for arg in args:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, arg)).click()

09?excluded_duoxuan()→多選題(排除一個或一些選項)

# 09 多選題(排除一個或一些的選項)def excluded_duoxuan(self, i, *args):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)# print(len(a))c = []# y是計算arg的個數,方便計算還剩幾個選項y = 0for x in range(1, len(a)+1):c.append(x)for arg in args:y += 1c.remove(arg)# 還剩下幾個選項z = len(a) - y# 多選題選項個數b = random.randint(1, z)# 多選題用sample()d = random.sample(c, b)for r in d:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, r)).click()

思路:列表c中存放選項個數,然后逐一刪除輸入的參數,然后在剩下的選項中用多選題的思路進行操作。?

10 restrictive_duoxuan()→多選題(在某些選項中多選)

# 10 多選題(在某些選項中多選)def restrictive_duoxuan(self, i, *args):m = []for arg in args:m.append(arg)n = random.randint(1, len(m))o = random.sample(m, n)for q in o:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, q)).click()

思路:列表m中存放的內容就是所輸入的參數,?然后用多選題的思路進行操作。

11?range_duoxuan()→多選題(在m到n范圍內的多選)

# 11 多選題(在m到n范圍內的多選)def range_duoxuan(self, i, m, n):# 列表c為m到n的選項組,如當m=2,n=5時,c=[2,3,4,5]c = []for x in range(m, n+1):c.append(x)# 選項個數o = n - m + 1# 隨機生成要填幾個選項p = random.randint(1, o)d = random.sample(c, p)for r in d:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, r)).click()

?思路:列表c為m到n的選項組,如當m=2,n=5時,c=[2,3,4,5],然后用多選題的思路進行操作。

12?textinput_duoxuan()→多選題(選項中允許填空)

# 12 多選題(選項中允許填空)def textinput_duoxuan(self, i, c, wenzi):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)b = len(a)# m中存放選項m = []for x in range(1, b + 1):m.append(x)# 隨機生成要多選的選項個數o = random.randint(1, b)# 在選項中隨機選取o個選項n = random.sample(m, o)for r in n:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, r)).click()if c == r:time.sleep(0.2)self.driver.find_element(by=By.CSS_SELECTOR,value=input_css_selectors.format(i, c)).send_keys(wenzi)

注意:該函數只適用于一個選項中需要文本輸入的多選題。

思路:查看? 06 單選題(選項中允許填空)和??07 多選題(隨機選擇)? 即可理解。

13?text()→文本題

# 13 文本題def text(self, i, wenzi):self.driver.find_element(by=By.CSS_SELECTOR, value='#q{}'.format(i)).send_keys(wenzi)

思路:通過wenzi參數填寫相應的內容,實現文字題的填寫。

隨機所在城市的選擇? random_city_selection()

?

?請選擇您所在的城市的題目如上

?

????????如上圖所示, 問卷星還給出了海外這個選項,不過一般用不到,所以筆者就除去了它,剩下的列表并存在provinces中,之后用random函數即可隨機選擇城市。

????????將它存到自制的列表還有一個原因就是selenium的Select提供的三種選擇方式select_by_index(index)、select_by_value(value)、select_by_visible_text(visible_text),問卷星中只給出了value,因此很難隨機選擇。例如:如果給出index,那我們就可以使用random函數進行隨機選擇。

provinces = ['北京', '天津', '河北', '山西', '內蒙古', '遼寧', '吉林', '黑龍江','上海', '江蘇', '浙江', '安徽', '福建', '江西', '山東', '河南','湖北', '湖南', '廣東', '廣西', '海南', '重慶', '四川', '貴州','云南', '西藏', '陜西', '甘肅', '青海', '寧夏', '新疆', '臺灣','香港', '澳門']

?

注意:

①上圖中,省份與城市的選擇頁面是寫在ifame中,?因此需要進行frame和iframe之間的切換。關鍵不要忘記切換回去。如果沒有切換回去,即使點擊確定鍵后,它仍在iframe中,會使得接下來元素定位失敗。

②a表示省/直轄市下的城市。

# 隨機所在城市的選擇def random_city_selection(self, i):frame = self.driver.find_element(by=By.XPATH, value='//*[@id="q{}"]'.format(i))frame.click()# 滾動到最底端# self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")self.driver.switch_to.frame('PDF_i_chezchenz')ele = self.driver.find_element(by=By.CSS_SELECTOR, value='#province')s = Select(ele)province = random.choice(provinces)s.select_by_value(province)a = self.driver.find_elements(by=By.XPATH, value='//*[@id="city"]/label')# len(a)表示省下的城市有幾個# print(len(a))b = random.randint(1, len(a))self.driver.find_element(by=By.XPATH, value='//*[@id="city"]/label[{}]'.format(b)).click()self.driver.find_element(by=By.XPATH, value='//*[@id="form1"]/div[3]/div/input').click()# 注意切換回原來的frameself.driver.switch_to.parent_frame()

限制所在城市的選擇? restrictive_city_selection()

# 限制所在城市的選擇def restrictive_city_selection(self, i, arg):frame = self.driver.find_element(by=By.XPATH, value='//*[@id="q{}"]'.format(i))frame.click()# 滾動到最底端# self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")self.driver.switch_to.frame('PDF_i_chezchenz')ele = self.driver.find_element(by=By.CSS_SELECTOR, value='#province')s = Select(ele)s.select_by_value(arg)a = self.driver.find_elements(by=By.XPATH, value='//*[@id="city"]/label')# len(a)表示省下的城市有幾個# print(len(a))b = random.randint(1, len(a))self.driver.find_element(by=By.XPATH, value='//*[@id="city"]/label[{}]'.format(b)).click()self.driver.find_element(by=By.XPATH, value='//*[@id="form1"]/div[3]/div/input').click()# 注意切換回原來的frameself.driver.switch_to.parent_frame()

????????以上代碼與隨機所在城市的選擇的差別主要在于,添加了一個不定參數arg

通過在具體問卷.py文件中創立一個具有幾個城市的列表,然后隨機選擇它并將其作為arg參數,實現隨機選擇你所需要的城市。

例如下面的代碼:

????????具體問卷.py

restrictive_provinces = ['云南', '貴州', '四川'] restrictive_province = random.choice(restrictive_provinces)

提交按鈕? submit()

?

上圖所示的就是提交按鈕的流程?

按步驟寫代碼,如下

注意:有些步驟需要一點時間,所以加上time.sleep()

# 提交按鈕def submit(self):# time.sleep(0.5)btn = self.driver.find_element(by=By.CSS_SELECTOR, value='#submit_button')btn.click()# 出現點擊驗證碼驗證time.sleep(1)self.driver.find_element(by=By.XPATH, value='//*[@id="alert_box"]/div[2]/div[2]/div[2]/button').click()time.sleep(0.5)self.driver.find_element(by=By.XPATH, value='//*[@id="SM_BTN_1"]').click()time.sleep(4)# 關閉頁面handles = self.driver.window_handlesself.driver.switch_to.window(handles[0])# time.sleep(0.5)# # 刷新頁面(可能不需要)# self.driver.refresh()# 關閉當前頁面,如果只有一個頁面,則也關閉瀏覽器self.driver.close()

以上就是Sojump.py的全部代碼講解


全部代碼展示

# -*- coding: utf-8-*- import random from selenium import webdriver import time from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select""" 01 單選題(隨機選擇)danxuan() 02 單選題(只選擇某個選項)fixed_danxuan() 03 單選題(排除一個或一些選項)excluded_danxuan() 04 單選題(在m到n范圍內單選)range_danxuan() 05 單選題(在某些選項中選擇)如6個選項,在1235中單選restrictive_danxuan() 06 單選題(選項中允許填空)textinput_danxuan() 07 多選題(隨機選擇)duoxuan() 08 多選題(只選擇某些選項)fixed_duoxuan() 09 多選題(排除一個或一些選項)excluded_duoxuan() 10 多選題(在某些選項中多選)restrictive_duoxuan() 11 多選題(在m到n范圍內的多選)range_duoxuan() 12 多選題(選項中允許填空)text_input_duoxuan() 13 文本題text() """ count = 0 provinces = ['北京', '天津', '河北', '山西', '內蒙古', '遼寧', '吉林', '黑龍江','上海', '江蘇', '浙江', '安徽', '福建', '江西', '山東', '河南','湖北', '湖南', '廣東', '廣西', '海南', '重慶', '四川', '貴州','云南', '西藏', '陜西', '甘肅', '青海', '寧夏', '新疆', '臺灣','香港', '澳門']'''適用的可能是問卷星網頁無法右鍵,只能通過F12或者ctrl+shift+i快捷鍵進入開發者工具的問卷''' # 選項的xpath base_xpaths = '//*[@id="divquestion{}"]/ul/li' # 選項的css base_css_selectors = '#divquestion{} > ul > li:nth-child({})' # 允許填空選項的css_selector input_css_selectors = '#divquestion{} > ul > li:nth-child({}) > input.underline''''適用的可能是除了上面的情況的問卷星''' # 選項的xpath # base_xpaths = '//*[@id="div{}"]/div/div' # 選項的css # base_css_selectors = 'div{} > div.ui-controlgroup.column{} > div.ui-checkbox.checked' # 允許填空選項的css_selector # input_css_selectors = 'tqq{}_{}'class Wenjuanxing(object):# 初始化def __init__(self, url):self.url = url# 計數器def counter(self):global countcount += 1w = print("第{}次運行".format(count))return w# 偽裝seleniumdef weizhuang_selenium(self):# 躲避智能檢測self.option = webdriver.ChromeOptions()self.option.add_experimental_option('excludeSwitches', ['enable-automation'])self.option.add_experimental_option('useAutomationExtension', False)self.driver = webdriver.Chrome(options=self.option)self.driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'})self.driver.get(self.url)# 01 單選題(隨機選擇)def danxuan(self, i):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)b = random.randint(1, len(a))self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, b)).click()# 02 單選題(只選擇某個選項)def fixed_danxuan(self, i, b):self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, b)).click()# 03 單選題(排除一個或一些選項)def excluded_danxuan(self, i, *args):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)c = []# y是計算arg的個數,方便計算還剩幾個選項y = 0for x in range(1, len(a) + 1):c.append(x)for arg in args:y += 1c.remove(arg)d = random.choice(c)self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, d)).click()# 04 單選題(在m到n范圍內單選)def range_danxuan(self, i, m, n):x = random.randint(m, n)self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, x)).click()# 05 單選題(在某些選項中選擇)如6個選項,在1235中單選def restrictive_danxuan(self, i, *args):m = []for arg in args:m.append(arg)n = random.choice(m)self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, n)).click()# 06 單選題(選項中允許填空)def textinput_danxuan(self, i, c, wenzi):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)b = random.randint(1, len(a))self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, b)).click()if c == b:time.sleep(0.2)self.driver.find_element(by=By.CSS_SELECTOR,value=input_css_selectors.format(i, c)).send_keys(wenzi)# 07 多選題(隨機選擇)def duoxuan(self, i):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)b = len(a)# m中存放選項m = []for x in range(1, b + 1):m.append(x)c = random.randint(1, b)n = random.sample(m, c)for o in n:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, o)).click()# 08 多選題(只選擇某些選項)def fixed_duoxuan(self, i, *args):for arg in args:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, arg)).click()# 09 多選題(排除一個或一些的選項)def excluded_duoxuan(self, i, *args):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)# print(len(a))c = []# y是計算arg的個數,方便計算還剩幾個選項y = 0for x in range(1, len(a)+1):c.append(x)for arg in args:y += 1c.remove(arg)# 還剩下幾個選項z = len(a) - y# 多選題選項個數b = random.randint(1, z)# 多選題用sample()d = random.sample(c, b)for r in d:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, r)).click()# 10 多選題(在某些選項中多選)def restrictive_duoxuan(self, i, *args):m = []for arg in args:m.append(arg)n = random.randint(1, len(m))o = random.sample(m, n)for q in o:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, q)).click()# 11 多選題(在m到n范圍內的多選)def range_duoxuan(self, i, m, n):# 列表c為m到n的選項組,如當m=2,n=5時,c=[2,3,4,5]c = []for x in range(m, n+1):c.append(x)# 選項個數o = n - m + 1# 隨機生成要填幾個選項p = random.randint(1, o)d = random.sample(c, p)for r in d:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, r)).click()# 12 多選題(選項中允許填空)def text_input_duoxuan(self, i, c, wenzi):global base_xpathsbase_xpath = base_xpaths.format(i)a = self.driver.find_elements(by=By.XPATH, value=base_xpath)b = len(a)# m中存放選項m = []for x in range(1, b + 1):m.append(x)# 隨機生成要多選的選項個數o = random.randint(1, b)# 在選項中隨機選取o個選項n = random.sample(m, o)for r in n:self.driver.find_element(by=By.CSS_SELECTOR,value=base_css_selectors.format(i, r)).click()if c == r:time.sleep(0.2)self.driver.find_element(by=By.CSS_SELECTOR,value=input_css_selectors.format(i, c)).send_keys(wenzi)# 13 文本題def text(self, i, wenzi):self.driver.find_element(by=By.CSS_SELECTOR, value='#q{}'.format(i)).send_keys(wenzi)# 隨機所在城市的選擇def random_city_selection(self, i):frame = self.driver.find_element(by=By.XPATH, value='//*[@id="q{}"]'.format(i))frame.click()# 滾動到最底端self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")self.driver.switch_to.frame('PDF_i_chezchenz')ele = self.driver.find_element(by=By.CSS_SELECTOR, value='#province')s = Select(ele)province = random.choice(provinces)s.select_by_value(province)a = self.driver.find_elements(by=By.XPATH, value='//*[@id="city"]/label')# len(a)表示省下的城市有幾個# print(len(a))b = random.randint(1, len(a))self.driver.find_element(by=By.XPATH, value='//*[@id="city"]/label[{}]'.format(b)).click()self.driver.find_element(by=By.XPATH, value='//*[@id="form1"]/div[3]/div/input').click()# 注意切換回原來的frameself.driver.switch_to.parent_frame()# 限制所在城市的選擇def restrictive_city_selection(self, i, arg):frame = self.driver.find_element(by=By.XPATH, value='//*[@id="q{}"]'.format(i))frame.click()# 滾動到最底端# self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")self.driver.switch_to.frame('PDF_i_chezchenz')ele = self.driver.find_element(by=By.CSS_SELECTOR, value='#province')s = Select(ele)s.select_by_value(arg)a = self.driver.find_elements(by=By.XPATH, value='//*[@id="city"]/label')# len(a)表示省下的城市有幾個# print(len(a))b = random.randint(1, len(a))self.driver.find_element(by=By.XPATH, value='//*[@id="city"]/label[{}]'.format(b)).click()self.driver.find_element(by=By.XPATH, value='//*[@id="form1"]/div[3]/div/input').click()# 注意切換回原來的frameself.driver.switch_to.parent_frame()# 提交按鈕def submit(self):# time.sleep(0.5)btn = self.driver.find_element(by=By.CSS_SELECTOR, value='#submit_button')btn.click()# 出現點擊驗證碼驗證time.sleep(1)self.driver.find_element(by=By.XPATH, value='//*[@id="alert_box"]/div[2]/div[2]/div[2]/button').click()time.sleep(0.5)self.driver.find_element(by=By.XPATH, value='//*[@id="SM_BTN_1"]').click()time.sleep(4)# 關閉頁面handles = self.driver.window_handlesself.driver.switch_to.window(handles[0])# time.sleep(0.5)# # 刷新頁面(可能不需要)# self.driver.refresh()# 關閉當前頁面,如果只有一個頁面,則也關閉瀏覽器self.driver.close()

3.2? 具體問卷.py

由于問卷涉及一些內容,不便公開,因此我就將問卷內容馬賽克了(如下圖),網址也不公布了。大家了解一下題目的類型即可

★全部代碼展示★

# -*- coding: utf-8-*- import random import Sojump from Sojump import Wenjuanxing import schedule as schedulerestrictive_provinces = ['云南', '貴州', '四川']problems_10_1 = ['', 'xxx', 'xx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx']problems_10_2 = ['', 'xxx', 'xx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx']if __name__ == '__main__':url = '問卷星網址'wenjuanxing = Wenjuanxing(url)def run():# 隨機內容restrictive_province = random.choice(restrictive_provinces)problem_10_1 = random.choice(problems_10_1)problem_10_2 = random.choice(problems_10_2)# 計數器wenjuanxing.counter()# 偽裝seleniumwenjuanxing.weizhuang_selenium()# 問卷題目wenjuanxing.danxuan(1)wenjuanxing.danxuan(2)wenjuanxing.restrictive_danxuan(3, 2, 3, 4, 5)wenjuanxing.danxuan(4)wenjuanxing.danxuan(5)wenjuanxing.danxuan(6)wenjuanxing.duoxuan(7)wenjuanxing.danxuan(8)wenjuanxing.danxuan(9)# 第十題為兩個選項都可以填空的單選題,因此嘗試用try excepttry:wenjuanxing.textinput_danxuan(10, 1, problem_10_1)# print(problem_10_1)wenjuanxing.textinput_danxuan(10, 2, problem_10_2)# print(problem_10_2)except:passwenjuanxing.duoxuan(11)wenjuanxing.danxuan(12)# 13得考慮一下# 第13題雖然是有五個選項的多選題,不過依據邏輯,它只能分成1 3 1 形式,# 即要么選擇第一個選項,要么在中間三個選項之間進行多選,要么選擇最后一個選項。a = random.randint(1, 3)if a == 1:wenjuanxing.fixed_danxuan(13, 1)elif a == 2:wenjuanxing.range_duoxuan(13, 2, 5)else:wenjuanxing.fixed_danxuan(13, 6)wenjuanxing.danxuan(14)wenjuanxing.duoxuan(15)wenjuanxing.duoxuan(16)wenjuanxing.danxuan(17)# 限制省份的隨機選擇# print(restrictive_province)wenjuanxing.restrictive_city_selection(18, restrictive_province)# time.sleep(3)# 提交問卷wenjuanxing.submit()# 每隔2秒運行schedule.every(2).seconds.do(run)# 判斷條件while Sojump.count < 50:schedule.run_pending()

具體代碼講解

①每隔一段時間運行代碼

import schedule as schedule def run():passschedule.every(2).seconds.do(run)while True:schedule.run_pending()

???該模板請牢記,上述代碼表示每隔五秒運行一次,如果需要每隔一秒運行一次代碼,則將其中的

schedule.every(2).seconds.do(run)改為 schedule.every(1).second.do(run)

由于count參數表示代碼運行的次數,而問卷星在刷50份后得過一小時后才能繼續刷,因此得加個判斷(如下),防止程序一直運行。

while Sojump.count < 50:

②編寫主體代碼

? ? ? ? 因為一些題目的選項中需要填寫文本,以及如果大家需要限定省份的隨機隨機選擇。這就需要制作相應的列表,然后通過隨機選取列表中的某個內容,自動填寫進問卷。

restrictive_provinces = ['云南', '貴州', '四川']problems_10_1 = ['', 'xxx', 'xx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx']problems_10_2 = ['', 'xxx', 'xx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx', 'xxx']

這里需要注意的是:?隨機選取列表中內容的代碼段需要編寫在run()函數中而不能直接寫在上述代碼下面,否則不經過run()函數,不會進行每隔一段時間運行的過程,其產生的隨機內容將在每次使用都不變。這是筆者后來無意發現的,說來慚愧,這一個小失誤,導致一次刷的50份的文本內容都一樣,因此大家敲代碼時需要多思考。

????????接下來需要調用類

url = '問卷星網址' wenjuanxing = Wenjuanxing(url)

? ? ? ? 接下來就是編寫run()函數,其中主要就是根據問卷內容、題目類型的不同而編寫。

代碼如下:

def run():# 隨機內容restrictive_province = random.choice(restrictive_provinces)problem_10_1 = random.choice(problems_10_1)problem_10_2 = random.choice(problems_10_2)# 計數器wenjuanxing.counter()# 偽裝seleniumwenjuanxing.weizhuang_selenium()# 問卷題目wenjuanxing.danxuan(1)wenjuanxing.danxuan(2)wenjuanxing.restrictive_danxuan(3, 2, 3, 4, 5)wenjuanxing.danxuan(4)wenjuanxing.danxuan(5)wenjuanxing.danxuan(6)wenjuanxing.duoxuan(7)wenjuanxing.danxuan(8)wenjuanxing.danxuan(9)# 第十題為兩個選項都可以填空的單選題,因此嘗試用try excepttry:wenjuanxing.textinput_danxuan(10, 1, problem_10_1)# print(problem_10_1)wenjuanxing.textinput_danxuan(10, 2, problem_10_2)# print(problem_10_2)except:passwenjuanxing.duoxuan(11)wenjuanxing.danxuan(12)# 13得考慮一下# 第13題雖然是有五個選項的多選題,不過依據邏輯,它只能分成1 3 1 形式,# 即要么選擇第一個選項,要么在中間三個選項之間進行多選,要么選擇最后一個選項。a = random.randint(1, 3)if a == 1:wenjuanxing.fixed_danxuan(13, 1)elif a == 2:wenjuanxing.range_duoxuan(13, 2, 5)else:wenjuanxing.fixed_danxuan(13, 6)wenjuanxing.danxuan(14)wenjuanxing.duoxuan(15)wenjuanxing.duoxuan(16)wenjuanxing.danxuan(17)# 限制省份的隨機選擇# print(restrictive_province)wenjuanxing.restrictive_city_selection(18, restrictive_province)# time.sleep(3)# 提交問卷wenjuanxing.submit()

????????著重注意一下以下兩題

第10題為兩個選項都可以填空的單選題,因此嘗試用try except。 第13題雖然是有五個選項的多選題,不過依據邏輯,它只能分成1 3 1 形式, 即要么選擇第一個選項,要么在中間三個選項之間進行多選,要么選擇最后一個選項。

此外,如果要進行隨機省份的選擇,只需調用即可(如下)

wenjuanxing.random_city_selection(18)

剩下的其他函數在之前的內容中講過,也比較簡單。?


四、總結

????????問卷星根據題目的不同、題目和選項的搭配能產生很多變化,上述只涉及到幾個較常用的幾個函數。后續大家如果需要實現一些其他功能的,可以自行編寫,也可以與筆者多多交流,完善該模塊。

????????最后希望大家不要光看文章,也可以動手敲敲代碼,加深理解。

????????如果大家發現無法刷問卷,可能就是元素定位出現了問題,可以去看看元素定位屬于上述講的哪一類。

? ? ? ? 如有錯誤之處,請批評指正!!

總結

以上是生活随笔為你收集整理的python实现刷问卷星份数(面向对象)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

最近更新的中文字幕 | 欧美99久久| 婷婷丁香花| 久久手机免费观看 | 亚洲成人在线免费 | 九九免费在线视频 | 精品一区二区在线免费观看 | 精品国产一区二区三区久久久蜜月 | 91av原创| 亚洲九九九 | 激情婷婷色 | 国产精品一区二区免费视频 | 欧美日韩中文另类 | 久久新 | 亚洲成人午夜在线 | 久久久久久草 | 91精品区| 亚洲精品视频在线免费播放 | 国产精品美女视频网站 | 亚洲精品中文字幕视频 | 久草视频在线免费 | 亚洲国产69 | 久久精品国产精品亚洲 | 日韩激情视频在线观看 | 97超碰人人干 | 国产一区二区高清视频 | 国产精品永久在线 | av网站免费在线 | 亚洲视频在线视频 | 精品视频99 | 丁香六月久久综合狠狠色 | 国产精品福利在线观看 | 91麻豆免费版| 6080yy精品一区二区三区 | 在线免费观看视频a | 日日干夜夜干 | 综合久久久 | 欧女人精69xxxxxx | 久久久久久久久影视 | 精品一二三四视频 | 激情欧美一区二区三区 | 少妇bbw揉bbb欧美 | 国产69精品久久app免费版 | 久久人人97超碰国产公开结果 | 国产一区二区影院 | 九九影视理伦片 | 国产欧美三级 | 99视频在线观看一区三区 | 欧美日韩视频一区二区三区 | 婷婷综合av | 免费精品在线观看 | 日韩在线视频免费播放 | 欧美日韩久久久 | 亚洲综合国产精品 | 久久久久国产一区二区 | 蜜桃传媒一区二区 | 日日婷婷夜日日天干 | 国产精品黑丝在线观看 | 一区精品在线 | 狠狠网亚洲精品 | 麻豆94tv免费版 | 日韩中字在线 | 婷婷在线色 | 超碰在线观看99 | 亚洲日本va在线观看 | 国产人免费人成免费视频 | 国产精品福利无圣光在线一区 | 在线 高清 中文字幕 | 久久伦理| 久久这里精品视频 | 天天鲁天天干天天射 | 激情五月色播五月 | 少妇高潮流白浆在线观看 | 中文字幕 国产专区 | 国产91大片 | 中文字幕免费观看 | 久久免费播放 | 中文亚洲欧美日韩 | 日韩在线观看你懂得 | 国产一区二区不卡视频 | 日韩免费看的电影 | 国产成人av片 | 亚洲成a人片77777潘金莲 | 99国产精品一区 | 91精品视频一区二区三区 | 午夜精品一区二区三区在线观看 | 91日本在线播放 | 国产1区2 | 国精产品满18岁在线 | 欧美精品在线一区 | 日韩欧美专区 | 婷婷综合成人 | 久久成人久久 | 一区国产精品 | 操操操com| 精品国产欧美一区二区三区不卡 | 91av在线不卡 | 亚洲国内精品视频 | 国产精品系列在线播放 | www免费看 | free,性欧美 九九交易行官网 | 97中文字幕 | 免费的黄色的网站 | 国产a视频免费观看 | 91精品一区国产高清在线gif | 九九热在线精品视频 | 午夜免费视频网站 | 亚洲精品18日本一区app | 五月天婷婷在线观看视频 | 精品国产乱码久久久久久久 | 久久久久女教师免费一区 | 亚洲欧美在线观看视频 | 日韩网站一区二区 | 免费国产一区二区视频 | 久久人人爽人人片 | 婷婷激情五月 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 在线观看蜜桃视频 | 国产色区 | 午夜婷婷在线播放 | 丁香六月五月婷婷 | 91亚色视频在线观看 | 国产一区二区网址 | 91丨九色丨蝌蚪丰满 | 日韩在线高清 | 国产精品精品久久久久久 | 美女久久网站 | 99999精品视频 | 久久y | 在线免费观看欧美日韩 | 亚州中文av | 国产录像在线观看 | www.看片网站 | 国产亚洲aⅴaaaaaa毛片 | 精品国产乱码一区二 | 不卡中文字幕在线 | 天天爽综合网 | 中文字幕 在线看 | 成人免费视频网站在线观看 | 国产精品亚洲成人 | 91精品久久香蕉国产线看观看 | 久久综合婷婷国产二区高清 | 久久精品国产亚洲aⅴ | 99久久精品免费看国产麻豆 | 久久精品视频在线免费观看 | 91视频中文字幕 | 欧美日性视频 | 国产精品第54页 | 五月情婷婷 | 欧美精品久久 | 在线免费91| 婷婷丁香色 | 九九九热精品免费视频观看 | 波多野结衣精品在线 | 欧美精品久久久久久久久久白贞 | 色播五月激情综合网 | 天天色天天操综合 | 狠狠狠狠狠狠狠干 | 国产人成在线视频 | 天天爱综合 | 91九色最新 | 天天曰天天 | avcom在线| 欧美日韩在线观看一区二区三区 | 久久久久久久久久久久久久电影 | aaa亚洲精品一二三区 | 日韩精品五月天 | 欧美日韩18| 又黄又爽又刺激 | 久久涩视频 | 国产精品综合久久久久久 | 中文字幕在线视频第一页 | 久草在线免费新视频 | 韩国一区二区在线观看 | 国产爽妇网 | 国产精品毛片 | 精品国产伦一区二区三区观看方式 | 激情开心站 | 黄色资源在线观看 | 91视频免费观看 | 国产精品久久久久久久久久久久午夜 | 婷婷电影在线观看 | 欧美日韩国产综合一区二区 | 日韩在线观看的 | 狠狠gao | 欧洲在线免费视频 | 久久久久久久久久久久电影 | 婷婷精品国产一区二区三区日韩 | 成人va天堂| 一级片免费观看视频 | a级成人毛片 | 免费av网站在线看 | 免费久久网| 色视频成人在线观看免 | 丁香花中文字幕 | 久久艹国产 | 国产韩国日本高清视频 | 麻豆视频在线观看 | 天天操天天色综合 | 国产精品涩涩屋www在线观看 | 97超碰免费在线 | 天天操天天射天天 | 国产日本亚洲高清 | 国产精品毛片一区视频播不卡 | 欧美精品久久久久久久久免 | 日韩理论 | 香蕉视频18 | 免费v片| 国产午夜精品免费一区二区三区视频 | 国外调教视频网站 | 久久精品爱视频 | av片一区二区 | 精品亚洲一区二区 | 欧美日韩aaaa | 国产馆在线播放 | 日韩精品一区不卡 | 毛片无卡免费无播放器 | 91插插影库 | 天天综合视频在线观看 | 中文字幕a在线 | 黄色软件在线观看免费 | 日韩欧美综合视频 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 久久精品免费观看 | 中文在线a√在线 | 亚洲三级黄 | 一区二区三区www | 91精品国产自产老师啪 | 日日爱网站 | 午夜国产福利在线观看 | 天天综合网久久综合网 | 国产精品美女久久久久久 | 色婷婷丁香 | 1区2区3区在线观看 三级动图 | 四虎伊人| 狠狠干激情 | 久久精品免费 | 午夜精品久久久久久久99热影院 | 中文资源在线官网 | 国产精品夜夜夜一区二区三区尤 | 人人插人人玩 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 免费视频成人 | 不卡av在线免费观看 | 国产亚洲一区 | 天天插天天色 | 96久久久| 亚洲精品小区久久久久久 | 999电影免费在线观看2020 | 国产99久久久国产精品免费看 | 精品亚洲一区二区三区 | 久久成人国产 | 国产在线观看午夜 | 亚洲天堂网站 | 国产免费影院 | 四虎成人网 | 亚洲 欧美变态 另类 综合 | 色综合 久久精品 | 久久免视频| 国产一区二区精品 | 国产精品一区二区三区久久久 | www夜夜操com| 美女视频久久黄 | 成人在线视频网 | 国产精品99爱 | 亚洲国产成人精品久久 | www.国产在线视频 | 黄色综合 | 精品一区二区日韩 | 日本久久精| 亚洲夜夜网 | 日日干激情五月 | 日本黄色大片免费 | 在线观看a视频 | 午夜av不卡 | 91成年人在线观看 | 亚洲视频在线免费观看 | 黄色国产在线观看 | 国产片网站 | 欧美一二区在线 | 日韩高清三区 | 亚洲精品欧美成人 | 久久好看免费视频 | 日韩电影一区二区在线 | 久久久久女教师免费一区 | 国产精品久久一区二区三区不卡 | 亚洲三级精品 | 伊人看片 | 国语精品久久 | 欧美日韩国产二区三区 | 久久精品99精品国产香蕉 | 中文字幕 国产精品 | 丁香婷婷亚洲 | 黄色一级在线视频 | 成人资源在线观看 | 亚洲国产中文在线 | 97精品一区二区三区 | 日韩免费一区二区 | 久草视频在线免费看 | 热re99久久精品国产66热 | 欧美成人tv | 日批视频在线播放 | 蜜臀av性久久久久av蜜臀三区 | 亚洲最新av在线 | 日韩一区二区三区不卡 | 亚洲五月激情 | 日本女人b | 国产成人免费观看 | 国产一级片播放 | 视频在线91 | 久久少妇 | 高清中文字幕 | 色婷婷激情电影 | 精品国产一区二区三区日日嗨 | 91看片在线| 黄网站污| 亚洲精品乱码久久久久久9色 | 久久99深爱久久99精品 | 日韩在线小视频 | 日本在线h | 国内精品一区二区 | 激情av网| 美女国产精品 | 久章草在线观看 | 怡春院av| 久久午夜色播影院免费高清 | 国产精品国内免费一区二区三区 | 国产在线精品福利 | 四虎影视8848dvd | 欧美日韩首页 | 国产精品毛片一区视频播 | 国产一线二线三线在线观看 | 干亚洲少妇 | 在线黄色国产 | 狠狠操狠狠干天天操 | 天天操天天干天天爽 | 久久久久成| 欧美日韩中文国产一区发布 | 国产1区在线观看 | av在线播放快速免费阴 | av中文字幕日韩 | 国产精品久免费的黄网站 | 欧美性生活免费 | 久久免费毛片 | 日韩在线播放视频 | 欧美资源在线观看 | 在线观看一区二区视频 | 国产精品久久久久永久免费看 | 久久久精品网站 | 久久午夜网 | 五月天久久婷 | 亚洲综合小说 | 美女视频免费精品 | 久久精品在线视频 | 国产午夜精品视频 | 国产精品 欧美 日韩 | 日本黄色黄网站 | 国产在线视频资源 | 日韩午夜在线 | 色综合久久88色综合天天免费 | 亚州国产精品久久久 | 五月婷婷在线视频 | 最新在线你懂的 | 2019中文在线观看 | 中文字幕一区二区三区精华液 | 亚洲清纯国产 | 久久久久久久久久久国产精品 | 2019天天干夜夜操 | 久久久国产精品一区二区中文 | 狠狠操狠狠操 | 伊人婷婷综合 | 狠狠88综合久久久久综合网 | 人人爽影院 | 久草在线久 | 特级西西444www高清大视频 | 精品一二三四在线 | 亚洲 欧洲 国产 日本 综合 | 欧美一区免费观看 | 欧美另类视频 | 夜夜操网站 | 在线 精品 国产 | 91高清在线 | 999成人| 欧美a√在线 | 亚洲2019精品 | 欧美电影在线观看 | 在线免费观看黄色小说 | www.狠狠插.com| 国产大陆亚洲精品国产 | 欧美视屏一区二区 | 久久午夜网 | 色噜噜在线观看视频 | 五月导航 | 天天干人人干 | 成人精品国产免费网站 | 亚洲高清av在线 | 久久精品久久精品久久 | 精品亚洲va在线va天堂资源站 | 韩日av在线 | 亚洲视频免费在线看 | 欧美日韩免费一区二区 | 久草视频在线资源 | 午夜精品一区二区三区免费 | 欧美国产在线看 | www.夜夜操.com | 91精品资源 | 欧美在线视频a | 精品在线小视频 | 国产青草视频在线观看 | 午夜色大片在线观看 | 在线观看免费国产小视频 | 高清免费在线视频 | 婷婷射五月 | 91精品日韩 | 97成人在线观看视频 | 久久久国产视频 | 在线黄色免费 | 久久视频在线看 | 97超碰中文字幕 | 色资源网免费观看视频 | 91在线日本 | 五月综合在线观看 | 在线电影日韩 | 美女激情影院 | 欧美,日韩 | 免费a v在线 | av免费成人| 五月婷网 | 日批视频在线 | 97超碰国产在线 | 天天天色综合a | 成人综合婷婷国产精品久久免费 | 国产在线观看你懂得 | 久久一区精品 | 精品女同一区二区三区在线观看 | 久久99国产一区二区三区 | 国产 欧美 日产久久 | 国产精品一区二区视频 | 不卡的av中文字幕 | 玖玖视频在线 | 九九热精品视频在线播放 | 亚洲精品电影在线 | av天天色| 99在线视频免费观看 | av成人在线电影 | 人人干人人搞 | av色影院| 国产精品99久久久久久宅男 | 午夜视频在线观看欧美 | 人人干97 | 91一区啪爱嗯打偷拍欧美 | 97在线看| 亚洲成av人影院 | 久久一区二区三区国产精品 | 人人爽影院 | 亚洲黄色在线观看 | 黄色av一级片| 亚洲精品玖玖玖av在线看 | 久久爽久久爽久久av东京爽 | 久久欧美视频 | 可以免费观看的av片 | 香蕉视频免费在线播放 | 国产精品久久久久永久免费 | 国产片免费在线观看视频 | 欧美一级裸体视频 | 国产一区国产二区在线观看 | 天天操天天色天天射 | 337p欧美| 日韩欧美在线视频一区二区 | 亚洲日日夜夜 | 超碰在线最新网址 | av在线精品 | 日本黄色大片免费 | 99热只有精品在线观看 | 国产精品久久久久久久电影 | 黄色日批网站 | 欧美激情综合五月色丁香小说 | 免费看高清毛片 | 激情综合色播五月 | 深爱婷婷 | 91视频在线看 | 九九99视频| 91资源在线视频 | 亚洲欧美日韩国产一区二区三区 | 人人澡人人添人人爽一区二区 | 精品99久久久久久 | 激情婷婷欧美 | 久久久久久久久久久久国产精品 | 久久久免费看片 | 中文字幕美女免费在线 | 国产黄免费在线观看 | 国产视频资源在线观看 | 成人一级片免费看 | 国产伦理一区二区 | 欧美日韩国产一区二区三区 | 99久久99视频只有精品 | 日韩精品一区二区三区第95 | 91在线视频免费播放 | 99视频精品免费观看, | 性色av免费在线观看 | 国产一区二区三区免费在线 | 天天色综合1 | 五月婷婷视频 | 国产精品久久久久久一区二区三区 | 久久伊人五月天 | 色偷偷人人澡久久超碰69 | 视频福利在线 | 亚洲欧洲中文日韩久久av乱码 | 久久草草影视免费网 | 国产精品久久一卡二卡 | 国产精品一区二区久久精品 | 一级欧美一级日韩 | 国产免费区| 天天插日日操 | 在线播放日韩 | 人人澡人人模 | 国产精品亚洲人在线观看 | a视频在线 | 麻豆综合网 | 91av亚洲 | 一级成人网 | 在线观看日韩免费视频 | 色综合久久综合网 | 亚洲黄色在线看 | 国内视频 | 日韩av网址在线 | 国产高清一区二区 | 97精品久久人人爽人人爽 | 日韩性色 | 五月天国产 | 国产字幕在线观看 | 久久婷亚洲五月一区天天躁 | 五月天久久精品 | 亚洲午夜精 | 丁香六月激情婷婷 | 青草视频在线播放 | 在线播放日韩av | 欧美男女爱爱视频 | 国产在线精品观看 | 天天艹天天 | 亚洲黄色精品 | 日韩一区二区三区高清免费看看 | 免费看网站在线 | 99精品久久99久久久久 | 亚洲美女精品视频 | 亚洲aaa级| 日韩极品视频在线观看 | 国产精品一区二区中文字幕 | 激情欧美一区二区三区 | 久久精品精品电影网 | 久久综合欧美精品亚洲一区 | 国产精品毛片一区二区三区 | 国产精品久久久免费 | 五月激情六月丁香 | 国产精品a久久 | 日韩18p| 91精品在线免费视频 | 国产白浆视频 | 99久久日韩精品视频免费在线观看 | 正在播放国产一区二区 | 欧美另类sm图片 | 国产一级免费播放 | 色av婷婷 | 伊人激情综合 | 久久久亚洲精品 | 日韩在线高清视频 | 国产婷婷 | 久久久久久久免费观看 | 国产精品9999久久久久仙踪林 | 国产精品毛片一区二区 | 麻豆免费视频观看 | 91精彩在线视频 | 欧美va天堂va视频va在线 | 欧美另类调教 | 国内外成人在线视频 | 黄色影院在线免费观看 | 97色婷婷成人综合在线观看 | 成人播放器 | 久久成人精品视频 | 亚洲理论电影 | 99免费在线观看视频 | 亚洲视频在线观看免费 | 日韩激情av在线 | 免费网址在线播放 | 丝袜美腿av | .国产精品成人自产拍在线观看6 | 97色在线观看免费视频 | 亚一亚二国产专区 | 狠狠狠狠狠狠 | 欧美国产日韩一区二区三区 | 国产成人福利在线观看 | 欧美精品在线观看免费 | 日韩黄在线观看 | 精品久久美女 | 一区二区三区日韩在线 | 在线观看久久久久久 | 最近中文字幕视频网 | 在线免费视频a | 婷婷精品国产欧美精品亚洲人人爽 | 中文字幕影视 | 高清一区二区三区 | www.人人干| 韩国精品一区二区三区六区色诱 | 69av免费视频| 精品国精品自拍自在线 | 久久九九精品久久 | 五月婷婷六月丁香 | 操天天操 | 欧美性生活免费看 | 麻豆国产在线视频 | 久久黄色影视 | 免费观看国产精品视频 | 久久久精品免费看 | 国产一区二区久久久久 | 韩国一区二区在线观看 | 涩涩网站在线观看 | 69av网| 99综合视频 | 一级成人在线 | a视频在线观看 | 国产99re | 日韩电影中文 | 国产精品丝袜 | 粉嫩一区二区三区粉嫩91 | 美女福利视频网 | 日韩激情视频在线观看 | 欧美在线一 | 亚洲国产成人高清精品 | 99久久久久国产精品免费 | 91精品国产一区二区在线观看 | 国产伦精品一区二区三区四区视频 | 日本黄色免费网站 | 国产超碰在线 | 97超碰在线资源 | 最近中文字幕大全中文字幕免费 | 国产一级片免费观看 | 91av99| 超碰97中文 | 免费三级a| 久久大视频 | 四虎影视www | 国产视频在线一区二区 | 特黄特色特刺激视频免费播放 | 黄色在线免费观看网址 | 国产中文在线字幕 | 久久国产精品久久国产精品 | 亚洲理论视频 | 精品福利视频在线 | 久久综合国产伦精品免费 | 一本一道久久a久久综合蜜桃 | av电影免费 | 精品自拍网 | 狠狠色丁香久久婷婷综 | 免费看黄在线 | 亚洲成人家庭影院 | 99久久国产免费,99久久国产免费大片 | 精品久久久成人 | 99久久精品国产观看 | www.大网伊人 | 极品中文字幕 | 久久精品视频播放 | 西西4444www大胆无视频 | 国产精品va最新国产精品视频 | 99精品国产一区二区三区不卡 | 免费看国产一级片 | 超碰97人人在线 | 国产亚洲久一区二区 | 久久99深爱久久99精品 | 狠狠操.com| 一区二区三区电影 | 亚洲精品国产自产拍在线观看 | 久影院| 激情网五月 | 天天做天天爱天天综合网 | 色综合亚洲精品激情狠狠 | 91香蕉视频在线 | 五月激情六月丁香 | 99久久精品国产观看 | 一区二区三区三区在线 | 韩国精品在线观看 | 国产精品热 | 干干夜夜 | 久草国产视频 | 免费黄色在线网址 | 精品免费一区二区三区 | 在线高清一区 | 日韩精品一区二区免费视频 | 精品一区精品二区高清 | 91成人午夜 | 一级黄色片在线免费看 | 天天爽天天搞 | 亚洲天堂精品视频在线观看 | 97超级碰碰碰碰久久久久 | 成人免费视频网址 | 99性视频 | 在线观看日韩中文字幕 | 成人理论电影 | 国产男女无遮挡猛进猛出在线观看 | 久久综合电影 | 亚洲精品91天天久久人人 | 成人性生交视频 | 蜜桃av人人夜夜澡人人爽 | 亚洲精品资源在线 | 国产破处在线播放 | 国产3p视频 | 久久se视频 | 亚洲精品久久久久www | 五月天网站在线 | 国产成年免费视频 | 久久精品国产久精国产 | 一级做a爱片性色毛片www | 成人试看120秒 | 色中文字幕在线观看 | 久草免费在线观看 | 欧美日韩在线第一页 | 欧美一级久久 | www国产亚洲 | 日韩丝袜在线观看 | 日韩av在线高清 | av成人动漫在线观看 | 欧美一级黄色视屏 | 国产精品手机在线观看 | 婷婷五月在线视频 | 国产精品 999| 黄色大片免费播放 | 97精品国产aⅴ | 丁香av在线| 91精品中文字幕 | 国产高清 不卡 | 久久这里只有精品9 | 久久国产精品一区二区 | 日韩精品一区二区三区高清免费 | 国产精品久久久久久久久久久免费看 | 亚洲黄色小说网址 | 色婷婷av在线 | 国产精品毛片久久 | 超碰97网站| 人人爱人人做人人爽 | 手机av资源| 日韩精品一区二区在线观看视频 | 欧美做受xxx| 在线黄频| 国产精品久久综合 | 青青色影院 | 久久精品亚洲国产 | 看全黄大色黄大片 | 91香蕉视频污在线 | 亚洲国产合集 | 久久9精品 | 在线成人一区 | 亚洲三级视频 | 亚洲成人一二三 | 在线三级播放 | 久久视频在线看 | 91久色蝌蚪 | 欧美日韩国产成人 | 国内丰满少妇猛烈精品播放 | 91综合久久一区二区 | 欧美一区二区在线免费看 | 欧美日韩一区三区 | 麻豆精品视频在线 | 在线观看国产日韩 | 美女av电影 | 国产久草在线观看 | 在线久草视频 | 国产精品久久久久久久7电影 | 超碰在线人人97 | 国产精品24小时在线观看 | 国产精品一区免费在线观看 | 999视频在线观看 | 免费看污在线观看 | 亚洲精品久久久久999中文字幕 | 成人动漫一区二区 | 亚洲欧美日韩国产一区二区 | 色婷婷在线观看视频 | 亚洲综合色站 | 四虎在线免费 | 国产成人精品一区二区三区免费 | 黄色网www | 五月激情婷婷丁香 | 狠狠久久婷婷 | 欧美伦理一区二区三区 | 色综合 久久精品 | 天天干天天怕 | 69亚洲乱 | 天天操夜夜看 | 精品在线亚洲视频 | 日韩av看片 | 亚洲天堂激情 | 玖玖国产精品视频 | 九九在线高清精品视频 | 黄色成人小视频 | 欧美精品亚洲精品 | 日韩欧美视频在线观看免费 | 麻豆国产露脸在线观看 | 国产高清不卡一区二区三区 | 免费观看版 | 婷婷激情5月天 | 人人射人人 | 99久久www| 亚洲一级片免费观看 | 99久久这里有精品 | 亚洲免费专区 | 黄色资源在线 | 操操操com | 日韩精品一区二区三区中文字幕 | 欧洲在线免费视频 | 97视频免费 | 亚洲美女视频网 | 夜夜爽www | 国产黄色片网站 | 免费一级片在线观看 | 中文字幕.av.在线 | 亚洲乱码久久 | 国产手机视频在线 | av官网在线| 97视频在线观看免费 | 中日韩欧美精彩视频 | 又黄又爽又色无遮挡免费 | 99热在线网站 | 久久综合九色综合欧美狠狠 | 成人毛片在线观看视频 | 91九色综合 | 国产探花 | 久久人人爽人人爽人人片 | a极黄色片 | 不卡精品视频 | 黄色三级网站 | 午夜91在线 | 亚洲精品久久久久中文字幕二区 | 99欧美视频| 最近高清中文字幕在线国语5 | 青青草国产免费 | 999亚洲国产996395 | 亚洲第一av在线 | 国产精品第十页 | 最近中文字幕大全中文字幕免费 | 成人av一区二区在线观看 | 麻豆视频在线播放 | 亚洲精区二区三区四区麻豆 | 99 久久久久| 91精品国自产在线观看 | 国产精品一区二区av日韩在线 | 色婷婷综合久久久中文字幕 | 日本黄色一级电影 | 97av影院 | 色婷婷www| 丁香5月婷婷 | 中文字幕在线观看视频一区二区三区 | 国产伦精品一区二区三区四区视频 | 国产精品久久久久aaaa九色 | 亚洲欧洲精品视频 | 在线小视频国产 | 久久激情日本aⅴ | www.亚洲精品 | 国产亚洲精品综合一区91 | 成年人免费在线播放 | www婷婷| 国产一区黄色 | www.av小说 | 在线观看视频一区二区三区 | 丁香婷婷综合网 | 日韩午夜精品 | 美女视频黄在线 | 日韩一区二区三区高清在线观看 | 在线国产91 | 中文字幕在线视频第一页 | 免费看一级片 | 国产精品日韩欧美一区二区 | 999视频在线播放 | 99精品免费在线 | 国产日韩在线一区 | 久久观看免费视频 | 天天射天天操天天 | 成人黄色免费在线观看 | 亚洲精品视频在线观看网站 | av品善网| 99热99re6国产在线播放 | av电影中文字幕 | 中文有码在线 | 日韩免费观看一区二区 | 国产成人精品在线 | 97电影院在线观看 | 麻豆一区二区 | 欧美日韩免费在线观看视频 | 国产在线1区 | 国产精品欧美久久久久久 | 国产精品久久久久久久久久东京 | 99视频99| h视频在线看 | 天天色综合天天 | 欧美日韩视频网站 | 美女福利视频网 | 激情在线免费视频 | 亚洲免费永久精品国产 | a视频在线 | 色妞色视频一区二区三区四区 | 久久在线免费观看 | 国产永久免费 | 91视频免费国产 | 狠狠的操 | av色影院| 午夜久久久久久久久 | 在线观看小视频 | 国产精品专区h在线观看 | 日韩高清观看 | 日韩三级免费 | 欧美天天综合 | 国产在线国偷精品产拍免费yy | 97看片吧| 国产黄色在线 | 国产资源在线免费观看 | 黄色99视频| 美女在线免费视频 | 人人艹视频 | 91在线日韩 | 天天综合网在线观看 | 欧美日韩p片| 国产精品高潮呻吟久久久久 | 97香蕉超级碰碰久久免费软件 | 超碰在线97国产 | 91精品视频免费在线观看 | 国内视频在线观看 | 天天干一干 | 国产高清中文字幕 | 一区二区三区国产欧美 | 丝袜美腿在线播放 | 黄色一级影院 | 日韩中文字幕免费看 | 日韩午夜视频在线观看 | 欧美地下肉体性派对 | 久草免费福利在线观看 | 亚洲国产婷婷 | av中文字幕不卡 | 最新成人在线 | 国产免费观看av | 亚洲精品一区二区三区四区高清 | 天天摸天天舔天天操 | 久久免费视频在线 | 天天做日日爱夜夜爽 | 免费高清在线一区 | 91av免费看| 亚洲国产精品成人女人久久 | 国产视频久 | 丁香av| 亚洲精品视频免费在线观看 | 欧美日韩一区二区在线观看 | 中文字幕一区二区三区在线播放 | 99久久超碰中文字幕伊人 | 免费视频三区 | 人人爽人人澡 | 狠狠色噜噜狠狠狠狠2021天天 | 97热在线观看 | 久草视频免费播放 | 中文字幕美女免费在线 | 91精品一 | 国产一区二区免费在线观看 | 天天操狠狠操夜夜操 | 日韩免费成人av | 激情综合网五月激情 | 久久官网 | 精品国产成人在线 | 色婷婷六月天 | 涩av在线 | avhd高清在线谜片 | 九九精品毛片 | 亚洲激情在线播放 | 成人免费亚洲 | 视频一区亚洲 | 久久 一区 | 97人人超| av免费在线看网站 | 国产69精品久久久久99尤 | 国产高清中文字幕 | 欧美日本一二三 | 香蕉网在线观看 | bbbb操bbbb| 月丁香婷婷 | 首页中文字幕 | 天天狠狠干 | 天天操天天摸天天干 | 人人射网站| 欧美性久久久久久 | 久久综合九色综合久久久精品综合 | 日本在线观看一区二区 | 中文在线中文资源 | 久久免费视频2 | 欧美激情va永久在线播放 | 天堂av一区二区 | 亚洲少妇天堂 | 国产又粗又猛又色又黄视频 | 激情欧美xxxx | 国产资源网 | 最近中文字幕mv | 成人av一区二区兰花在线播放 | 日韩欧美国产激情在线播放 | 91资源在线播放 | 成人av网站在线 |