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

歡迎訪問 生活随笔!

生活随笔

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

python

如何用Python从TripAdvisor抓取数十万条酒店评论

發布時間:2023/12/20 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何用Python从TripAdvisor抓取数十万条酒店评论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我從TripAdvisor抓取一些酒店評論,然后發現了一種從它們那里刮掉數十萬條酒店評論的好方法。

讓我們假設,例如,我們要從大加那利島刮掉酒店評論。如果轉到TripAdvisor,我們將看到URL為:

https://www.tripadvisor.com/Hotels-g187471-Gran_Canaria_Canary_Islands-Hotels.html

復制

首先,我們需要從該位置檢索酒店的完整列表。為此,我們將使用下載完整的HTML?requests.get(url),然后嘗試從HTML中獲取此值:

如果我們仔細查看頁面HTML,我們將看到此值在此<span>標記內:

由于該范圍沒有任何標識符,并且該類似乎是自動生成的,因此我們將在.MOBILE_SORT_FILTER_BUTTONS旁邊的div中選擇范圍。就像是:

.MOBILE_SORT_FILTER_BUTTONS + div span

復制

首先,我們將需要PIP的產品requestsbs4包裝。我們還將安裝Pandas,以快速生成Excel并在以后使用DataFrame。

$ pip install requests bs4 pandas

復制

獲取頁數

安裝庫之后,我們可以編寫以下代碼來獲取頁數:

import requestsfrom bs4 import BeautifulSoupimport math, timeBASE_URL = 'https://www.tripadvisor.com/Hotels-g187471-Gran_Canaria_Canary_Islands-Hotels.html'PER_PAGE = 30response = requests.get(BASE_URL).textsoup = BeautifulSoup(response)span = soup.select('.MOBILE_SORT_FILTER_BUTTONS + div span')[0]N_PROPERTIES = int(re.sub('([^0-9\.])', '', span.text))print(f'There are {N_PROPERTIES} properties')N_PAGES = math.ceil(N_PROPERTIES / PER_PAGE)print(f'There are {N_PAGES} different pages')

?

如果導航到頁面2,我們將看到URL更改為:

https://www.tripadvisor.com/Hotels-g187471-oa30-Gran_Canaria_Canary_Islands-Hotels.html

獲取酒店列表

如我們所見,URL的唯一更改是-oa30在酒店ID之后添加的。如果導航到第二頁,則將使用-oa60代替-oa30。這發生在每個頁面上。這樣,我們可以創建一個函數來:

  • 從網址中提取酒店ID
  • 為每個頁面生成URL
  • def get_id_from_url(URL):# Split URL by -g to divide it before the IDprefix, suffix = url.split('-g', maxsplit=1)# Divide the URL after the ID (first dash)id, slug = suffix.split('-', maxsplit=1)return int(id)def get_listing_url(page, base_url=BASE_URL, per_page=PER_PAGE):assert page >= 0id = get_id_from_url(base_url)if page == 0:return BASE_URLreturn BASE_URL.replace(f'-g{id}-', f'-g{id}-oa{page * per_page}-')

    編寫N_PAGES完此代碼后,我們可以從0循環到并為每個頁面生成URL:

    現在,讓我們下載每個酒店列表頁面,并使用每個酒店URL生成一個數組:

    listings = []for i in range(N_PAGES):url = get_listing_url(i)# Random delay to avoid TripAdvisor blocking ustime.sleep(random.randint(2, 8))# Download current pagelisting_html = requests.get(url)listing_soup = BeautifulSoup(listing_html.text, 'html.parser')# Add hotels to listingsraw_listings = listing_soup.select('.listing')for raw_listing in raw_listings:listings.append('https://www.tripadvisor.com' + raw_listing.a['href'])

    幾分鐘后,我們應該listings用每個酒店URL填充變量🤩

    分析數據

    現在,讓我們看看如何從每個酒店刮取評論...這就是我們在TripAdvisor上可以看到的內容:

    如果向下滾動,我們將看到每個URL僅獲得5條評論,這不是很好(每個酒店可能有數千條評論!)。好的,讓我們打開我們的Chrome DevTools并檢查在與本節進行交互時發生了什么:

    ?

    如果現在更改評論語言(例如,更改為德語),我們將看到對此的請求/data/graphql/batched似乎很有趣:

    ?

    TripAdvisor正在使用某種結構向其GraphQL端點發送請求,并發送了一個名為的屬性locationId

    ?

    再一次,這locationId與我們在URL(在本例中Hotel_Review-g562819-d296922-Reviews-Bohemia_Suites_Spa...)中使用的完全相同。如果我們可以使用此端點從每個酒店獲取評論怎么辦?🤔

    首先,讓我們嘗試從酒店URL中提取位置ID和地理位置ID。每個酒店網址都與此類似:

    https://www.tripadvisor.com/Hotel_Review-g562819-d296922-Reviews-Bohemia_Suites_Spa-Playa_del_Ingles_Maspalomas_Gran_Canaria_Canary_Islands.html

    復制

    我們將需要后面-g的數字和之后的數字-d

    def get_ids_from_hotel_url(url):url = url.split('-')geo = url[1]loc = url[2]return (int(geo[1:]), int(loc[1:]))

    從GraphQL獲取數據

    現在,讓我們嘗試模仿TripAdvisor對他們的GraphQL執行的請求。如果我們從“網絡”標簽中復制原始請求,則會看到類似于以下JSON的內容:

    [{"query": "mutation LogBBMLInteraction($interaction: ClientInteractionOpaqueInput!) {\n? logProductInteraction(interaction: $interaction)\n}\n","variables": {"interaction": {"productInteraction": {"interaction_type": "CLICK","site": {"site_name": "ta","site_business_unit": "Hotels","site_domain": "www.tripadvisor.com"},"pageview": {"pageview_request_uid": "X@2fPQokGCIABGTeHYoAAAES","pageview_attributes": {"location_id": 296922,"geo_id": 562819,"servlet_name": "Hotel_Review"}},"user": {"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Safari/537.36","site_persistent_user_uid": "web373a.83.56.0.34.17609EB3BAC","unique_user_identifiers": {"session_id": "F5A494D1D5DB4DD491B72FB55E860886"}},"search": {},"item_group": {"item_group_collection_key": "X@2fPQokGCIABGTeHYoAAAES"},"item": {"product_type": "Hotels","item_id_type": "ta-location-id","item_id": loc,"item_attributes": {"element_type": "de","action_name": "REVIEW_FILTER_LANGUAGE"}}}}}},{"query": "query ReviewListQuery($locationId: Int!, $offset: Int, $limit: Int, $filters: [FilterConditionInput!], $prefs: ReviewListPrefsInput, $initialPrefs: ReviewListPrefsInput, $filterCacheKey: String, $prefsCacheKey: String, $keywordVariant: String!, $needKeywords: Boolean = true) {\n? cachedFilters: personalCache(key: $filterCacheKey)\n? cachedPrefs: personalCache(key: $prefsCacheKey)\n? locations(locationIds: [$locationId]) {\n??? locationId\n??? parentGeoId\n??? name\n??? placeType\n??? reviewSummary {\n????? rating\n????? count\n??? }\n??? keywords(variant: $keywordVariant) @include(if: $needKeywords) {\n????? keywords {\n??????? keyword\n????? }\n??? }\n??? ... on LocationInformation {\n????? parentGeoId\n??? }\n??? ... on LocationInformation {\n????? parentGeoId\n??? }\n??? ... on LocationInformation {\n????? name\n????? currentUserOwnerStatus {\n??????? isValid\n????? }\n??? }\n??? ... on LocationInformation {\n????? locationId\n????? currentUserOwnerStatus {\n??????? isValid\n????? }\n??? }\n??? ... on LocationInformation {\n????? locationId\n????? parentGeoId\n????? accommodationCategory\n????? currentUserOwnerStatus {\n??????? isValid\n????? }\n????? url\n??? }\n??? reviewListPage(page: {offset: $offset, limit: $limit}, filters: $filters, prefs: $prefs, initialPrefs: $initialPrefs, filterCacheKey: $filterCacheKey, prefsCacheKey: $prefsCacheKey) {\n????? totalCount\n????? preferredReviewIds\n????? reviews {\n??????? ... on Review {\n????????? id\n????????? url\n????????? location {\n??????????? locationId\n??????????? name\n????????? }\n????????? createdDate\n????????? publishedDate\n????????? provider {\n??????????? isLocalProvider\n????????? }\n????????? userProfile {\n??????????? id\n?????????? ?userId: id\n??????????? isMe\n??????????? isVerified\n??????????? displayName\n??????????? username\n??????????? avatar {\n????????????? id\n????????????? photoSizes {\n??????????????? url\n??????????????? width\n??????????????? height\n????????????? }\n ???????????}\n??????????? hometown {\n????????????? locationId\n????????????? fallbackString\n????????????? location {\n??????????????? locationId\n??????????????? additionalNames {\n????????????????? long\n??????????????? }\n??????????????? name\n??????? ??????}\n??????????? }\n??????????? contributionCounts {\n????????????? sumAllUgc\n????????????? helpfulVote\n??????????? }\n??????????? route {\n????????????? url\n??????????? }\n????????? }\n??????? }\n??????? ... on Review {\n????????? title\n????????? language\n????????? url\n??????? }\n??????? ... on Review {\n????????? language\n????????? translationType\n??????? }\n??????? ... on Review {\n????????? roomTip\n??????? }\n??????? ... on Review {\n????????? tripInfo {\n??????????? stayDate\n????????? }\n????????? location {\n??????????? placeType\n????????? }\n??????? }\n??????? ... on Review {\n????????? additionalRatings {\n??????????? rating\n??????????? ratingLabel\n????????? }\n??????? }\n??????? ... on Review {\n????????? tripInfo {\n??????????? tripType\n????????? }\n??????? }\n??????? ... on Review {\n????????? language\n????????? translationType\n????????? mgmtResponse {\n??????????? id\n??????????? language\n??????????? translationType\n????????? }\n??????? }\n??????? ... on Review {\n????????? text\n????????? publishedDate\n????????? username\n????????? connectionToSubject\n????????? language\n????????? mgmtResponse {\n??????????? id\n??????????? text\n??????????? language\n??????????? publishedDate\n??????????? username\n??????????? connectionToSubject\n????????? }\n??????? }\n??????? ... on Review {\n????????? id\n????????? locationId\n????????? title\n????????? text\n????????? rating\n????????? absoluteUrl\n????????? mcid\n????????? translationType\n????????? mtProviderId\n????????? photos {\n ???????????id\n??????????? statuses\n??????????? photoSizes {\n????????????? url\n????????????? width\n????????????? height\n??????????? }\n????????? }\n????????? userProfile {\n??????????? id\n??????????? displayName\n??????????? username\n????????? }\n? ??????}\n??????? ... on Review {\n????????? mgmtResponse {\n??????????? id\n????????? }\n????????? provider {\n??????????? isLocalProvider\n????????? }\n??????? }\n??????? ... on Review {\n????????? translationType\n????????? location {\n??????????? locationId\n??????????? parentGeoId\n????????? }\n????????? provider {\n??????????? isLocalProvider\n??????????? isToolsProvider\n????????? }\n????????? original {\n??????????? id\n??????????? url\n??????????? locationId\n??????????? userId\n??????????? language\n??????????? submissionDomain\n????????? }\n??????? }\n??????? ... on Review {\n????????? locationId\n????????? mcid\n????????? attribution\n??????? }\n??????? ... on Review {\n????????? __typename\n????????? locationId\n????????? helpfulVotes\n????????? photoIds\n????????? route {\n??????????? url\n????????? }\n????????? socialStatistics {\n??????????? followCount\n??????????? isFollowing\n??????????? isLiked\n??????????? isReposted\n??????????? isSaved\n??????????? likeCount\n??????????? repostCount\n?? ?????????tripCount\n????????? }\n????????? status\n????????? userId\n????????? userProfile {\n??????????? id\n??????????? displayName\n??????????? isFollowing\n????????? }\n????????? location {\n??????????? __typename\n??????????? locationId\n??????????? additionalNames {\n????????????? normal\n????????????? long\n????????????? longOnlyParent\n????????????? longParentAbbreviated\n????????????? longOnlyParentAbbreviated\n????????????? longParentStateAbbreviated\n????????????? longOnlyParentStateAbbreviated\n????????????? geo\n????????????? abbreviated\n????????????? abbreviatedRaw\n????????????? abbreviatedStateTerritory\n????????????? abbreviatedStateTerritoryRaw\n??????????? }\n??????????? parent {\n????????????? locationId\n????????????? additionalNames {\n??????????????? normal\n??????????????? long\n??????????????? longOnlyParent\n??????????????? longParentAbbreviated\n??????????????? longOnlyParentAbbreviated\n??????????????? longParentStateAbbreviated\n??????????????? longOnlyParentStateAbbreviated\n?? ?????????????geo\n??????????????? abbreviated\n??????????????? abbreviatedRaw\n??????????????? abbreviatedStateTerritory\n??????????????? abbreviatedStateTerritoryRaw\n????????????? }\n??????????? }\n????????? }\n??????? }\n??????? ... on Review {\n?????? ???text\n????????? language\n??????? }\n??????? ... on Review {\n????????? locationId\n????????? absoluteUrl\n????????? mcid\n????????? translationType\n????????? mtProviderId\n????????? originalLanguage\n????????? rating\n??????? }\n??????? ... on Review {\n????????? id\n????????? locationId\n????????? title\n????????? labels\n????????? rating\n????????? absoluteUrl\n????????? mcid\n????????? translationType\n????????? mtProviderId\n????????? alertStatus\n??????? }\n????? }\n??? }\n??? reviewAggregations {\n????? ratingCounts\n????? languageCounts\n????? alertStatusCount\n??? }\n? }\n}\n","variables": {"locationId": 296922,"offset": 0,"filters": [{"axis": "LANGUAGE","selections": ["de"]}],"prefs": None,"initialPrefs": {},"limit": 5,"filterCacheKey": None,"prefsCacheKey": "locationReviewPrefs","needKeywords": False,"keywordVariant": "location_keywords_v2_llr_order_30_en"}},{"query": "mutation UpdateReviewSettings($key: String!, $val: String!) {\n? writePersonalCache(key: $key, value: $val)\n}\n","variables": {"key": "locationReviewFilters_296922","val": "[{\"axis\":\"LANGUAGE\",\"selections\":[\"de\"]}]"}}]復制

    分析這個JSON,我們可以看到它是一個包含3個元素的數組。第一個元素似乎是記錄交互。第二個元素具有一些有趣的屬性,例如locationIdvariables.filters.selections(似乎包含語言iso代碼的數組),variables.offset(要跳過的評論數)和variables.limit(評論數限制)。第三個要素似乎是將用戶首選項寫入他們的數據庫中。


    很多人學習python,不知道從何學起。
    很多人學習python,掌握了基本語法過后,不知道在哪里尋找案例上手。
    很多已經做案例的人,卻不知道如何去學習更加高深的知識。
    那么針對這三類人,我給大家提供一個好的學習平臺,免費領取視頻教程,電子書籍,以及課程的源代碼!
    QQ群:553215015


    知道了這一點,我們可以創建一個新函數來從某個酒店獲取GraphQL數據:

    GRAPHQL_URL = 'https://www.tripadvisor.com/data/graphql/batched'def request_graphql(url, page=0):geo, loc = get_ids_from_hotel_url(url)request = [{"query": "mutation LogBBMLInteraction($interaction: ClientInteractionOpaqueInput!) {\n? logProductInteraction(interaction: $interaction)\n}\n","variables": {"interaction": {"productInteraction": {"interaction_type": "CLICK","site": {"site_name": "ta","site_business_unit": "Hotels","site_domain": "www.tripadvisor.com"},"pageview": {"pageview_request_uid": "X@2fPQokGCIABGTeHYoAAAES","pageview_attributes": {"location_id": loc,"geo_id": geo,"servlet_name": "Hotel_Review"}},"user": {"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Safari/537.36","site_persistent_user_uid": "web373a.83.56.0.34.17609EB3BAC","unique_user_identifiers": {"session_id": '{YOUR_SESSION_ID}'}},"search": {},"item_group": {"item_group_collection_key": "X@2fPQokGCIABGTeHYoAAAES"},"item": {"product_type": "Hotels","item_id_type": "ta-location-id","item_id": loc,"item_attributes": {"element_type": "es","action_name": "REVIEW_FILTER_LANGUAGE"}}}}}},{"query": "query ReviewListQuery($locationId: Int!, $offset: Int, $limit: Int, $filters: [FilterConditionInput!], $prefs: ReviewListPrefsInput, $initialPrefs: ReviewListPrefsInput, $filterCacheKey: String, $prefsCacheKey: String, $keywordVariant: String!, $needKeywords: Boolean = true) {\n? cachedFilters: personalCache(key: $filterCacheKey)\n? cachedPrefs: personalCache(key: $prefsCacheKey)\n? locations(locationIds: [$locationId]) {\n??? locationId\n??? parentGeoId\n??? name\n??? placeType\n??? reviewSummary {\n????? rating\n????? count\n??? }\n??? keywords(variant: $keywordVariant) @include(if: $needKeywords) {\n????? keywords {\n??????? keyword\n????? }\n??? }\n??? ... on LocationInformation {\n????? parentGeoId\n??? }\n??? ... on LocationInformation {\n????? parentGeoId\n??? }\n??? ... on LocationInformation {\n????? name\n????? currentUserOwnerStatus {\n??????? isValid\n????? }\n??? }\n??? ... on LocationInformation {\n????? locationId\n????? currentUserOwnerStatus {\n??????? isValid\n????? }\n??? }\n??? ... on LocationInformation {\n????? locationId\n????? parentGeoId\n????? accommodationCategory\n????? currentUserOwnerStatus {\n??????? isValid\n????? }\n????? url\n??? }\n??? reviewListPage(page: {offset: $offset, limit: $limit}, filters: $filters, prefs: $prefs, initialPrefs: $initialPrefs, filterCacheKey: $filterCacheKey, prefsCacheKey: $prefsCacheKey) {\n????? totalCount\n????? preferredReviewIds\n????? reviews {\n??????? ... on Review {\n????????? id\n ?????????url\n????????? location {\n??????????? locationId\n??????????? name\n????????? }\n????????? createdDate\n????????? publishedDate\n????????? provider {\n??????????? isLocalProvider\n????????? }\n????????? userProfile {\n??????????? id\n??????????? userId: id\n??????????? isMe\n??????????? isVerified\n??????????? displayName\n??????????? username\n??????????? avatar {\n????????????? id\n????????????? photoSizes {\n??????????????? url\n??????????????? width\n??????????????? height\n????????????? }\n? ??????????}\n??????????? hometown {\n????????????? locationId\n????????????? fallbackString\n????????????? location {\n??????????????? locationId\n??????????????? additionalNames {\n????????????????? long\n??????????????? }\n??????????????? name\n???????? ?????}\n??????????? }\n??????????? contributionCounts {\n????????????? sumAllUgc\n????????????? helpfulVote\n??????????? }\n??????????? route {\n????????????? url\n??????????? }\n????????? }\n??????? }\n??????? ... on Review {\n????????? title\n????????? language\n????????? url\n??????? }\n??????? ... on Review {\n????????? language\n????????? translationType\n??????? }\n??????? ... on Review {\n????????? roomTip\n??????? }\n??????? ... on Review {\n????????? tripInfo {\n??????????? stayDate\n????????? }\n ?????????location {\n??????????? placeType\n????????? }\n??????? }\n??????? ... on Review {\n????????? additionalRatings {\n??????????? rating\n??????????? ratingLabel\n????????? }\n??????? }\n??????? ... on Review {\n????????? tripInfo {\n??????????? tripType\n????????? }\n??????? }\n??????? ... on Review {\n????????? language\n????????? translationType\n????????? mgmtResponse {\n??????????? id\n??????????? language\n??????????? translationType\n????????? }\n??????? }\n??????? ... on Review {\n????????? text\n????????? publishedDate\n????????? username\n????????? connectionToSubject\n????????? language\n????????? mgmtResponse {\n??????????? id\n??????????? text\n??????????? language\n??????????? publishedDate\n??????????? username\n??????????? connectionToSubject\n????????? }\n??????? }\n??????? ... on Review {\n????????? id\n????????? locationId\n????????? title\n????????? text\n????????? rating\n????????? absoluteUrl\n????????? mcid\n????????? translationType\n????????? mtProviderId\n????????? photos {\n? ??????????id\n??????????? statuses\n??????????? photoSizes {\n????????????? url\n????????????? width\n????????????? height\n??????????? }\n????????? }\n????????? userProfile {\n??????????? id\n??????????? displayName\n??????????? username\n????????? }\n?? ?????}\n??????? ... on Review {\n????????? mgmtResponse {\n??????????? id\n????????? }\n????????? provider {\n??????????? isLocalProvider\n????????? }\n??????? }\n??????? ... on Review {\n????????? translationType\n????????? location {\n??????????? locationId\n??????????? parentGeoId\n????????? }\n????????? provider {\n??????????? isLocalProvider\n??????????? isToolsProvider\n????????? }\n????????? original {\n??????????? id\n??????????? url\n??????????? locationId\n??????????? userId\n??????????? language\n??????????? submissionDomain\n????????? }\n??????? }\n??????? ... on Review {\n????????? locationId\n????????? mcid\n????????? attribution\n??????? }\n??????? ... on Review {\n????????? __typename\n????????? locationId\n????????? helpfulVotes\n????????? photoIds\n????????? route {\n??????????? url\n????????? }\n????????? socialStatistics {\n??????????? followCount\n??????????? isFollowing\n??????????? isLiked\n??????????? isReposted\n??????????? isSaved\n??????????? likeCount\n??????????? repostCount\n??? ????????tripCount\n????????? }\n????????? status\n????????? userId\n????????? userProfile {\n??????????? id\n??????????? displayName\n??????????? isFollowing\n????????? }\n????????? location {\n??????????? __typename\n??????????? locationId\n??????????? additionalNames {\n????????????? normal\n????????????? long\n????????????? longOnlyParent\n????????????? longParentAbbreviated\n????????????? longOnlyParentAbbreviated\n????????????? longParentStateAbbreviated\n????????????? longOnlyParentStateAbbreviated\n ?????????????geo\n????????????? abbreviated\n????????????? abbreviatedRaw\n????????????? abbreviatedStateTerritory\n????????????? abbreviatedStateTerritoryRaw\n??????????? }\n??????????? parent {\n????????????? locationId\n????????????? additionalNames {\n??????????????? normal\n??????????????? long\n??????????????? longOnlyParent\n??????????????? longParentAbbreviated\n??????????????? longOnlyParentAbbreviated\n??????????????? longParentStateAbbreviated\n??????????????? longOnlyParentStateAbbreviated\n??? ????????????geo\n??????????????? abbreviated\n??????????????? abbreviatedRaw\n??????????????? abbreviatedStateTerritory\n??????????????? abbreviatedStateTerritoryRaw\n????????????? }\n??????????? }\n????????? }\n??????? }\n??????? ... on Review {\n??????? ??text\n????????? language\n??????? }\n??????? ... on Review {\n????????? locationId\n????????? absoluteUrl\n????????? mcid\n????????? translationType\n????????? mtProviderId\n????????? originalLanguage\n????????? rating\n??????? }\n??????? ... on Review {\n????????? id\n????????? locationId\n????????? title\n????????? labels\n????????? rating\n????????? absoluteUrl\n????????? mcid\n????????? translationType\n????????? mtProviderId\n????????? alertStatus\n??????? }\n????? }\n??? }\n??? reviewAggregations {\n????? ratingCounts\n????? languageCounts\n????? alertStatusCount\n??? }\n? }\n}\n","variables": {"locationId": loc,"offset": page * 20,"filters": [{"axis": "LANGUAGE","selections": ["es","en","de","fr","it"]}],"prefs": None,"initialPrefs": {},"limit": 20,"filterCacheKey": None,"prefsCacheKey": "locationReviewPrefs","needKeywords": False,"keywordVariant": "location_keywords_v2_llr_order_30_en"}},{"query": "mutation UpdateReviewSettings($key: String!, $val: String!) {\n? writePersonalCache(key: $key, value: $val)\n}\n","variables": {"key": "locationReviewFilters_4107099","val": "[{\"axis\":\"LANGUAGE\",\"selections\":[\"es\"]}]"}}]response = requests.post(GRAPHQL_URL, json=request, headers={'origin': 'https://www.tripadvisor.com','pragma': 'no-cache','referer': url,'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Safari/537.36','x-requested-by': 'TNI1625!AJip35tLIWuhpNQPmrwHxPeiKXvdZcnL7knBuCZi5C72/qqhuKp4Z0UJIclF3lVur1Wu4ZdKfvqHmfGsn939HaPm574AH0+pxs5wBXmVwF5wm/4/retQGYfVPgorX2lUtTDc8/Ej6X5EDaY3f3qV5r4EfRGA8CA5E9Eu39DyE34C','Cookie': '{YOUR_COOKIE_STRING}'})return response.json()

    在繼續之前,請注意您需要在此函數內進行三件事更改:

    • {YOUR_SESSION_ID}:您將需要在DevTools內部搜索cookie“ TASID”,并將此值放在此處。
    • {YOUR_COOKIE_STRING}:您將需要轉到“請求標頭”并在此處粘貼完整的Cookie字符串。

    ?

    • {YOUR_REQUESTED_BY}:您將需要轉到“請求標頭”,然后在此處粘貼完整的X-Requested-By標頭。

    ?

    現在我們已經準備好了此功能,我們非常接近通過每個酒店URL進行迭代,并通過調用此功能來獲取所有評論。只需要做一件事:我們需要找出每家酒店有多少條評論。

    讓我們嘗試我們的超級功能,看看會發生什么:-)

    ?

    而且有效!this正如我們在此結構中看到的那樣,我們剛剛獲得了data.locations[0].reviewListPage.reviews該酒店的前20條評論!

    每個評論具有以下結構:

    {"id": 780641546,"url": "/ShowUserReviews-g664857-d559667-r780641546-Hotel_Cordial_Mogan_Playa-Puerto_de_Mogan_Mogan_Gran_Canaria_Canary_Islands.html","location": {"locationId": 559667,"name": "Hotel Cordial Mogan Playa","placeType": "ACCOMMODATION","parentGeoId": 187471,"__typename": "LocationInformation","additionalNames": {"normal": "Hotel Cordial Mogan Playa","long": "Hotel Cordial Mogan Playa, Spain","longOnlyParent": "Spain","longParentAbbreviated": "Hotel Cordial Mogan Playa, Spain","longOnlyParentAbbreviated": "Spain","longParentStateAbbreviated": "Hotel Cordial Mogan Playa, Spain","longOnlyParentStateAbbreviated": "Spain","geo": "Puerto de Mogan","abbreviated": "Hotel Cordial Mogan Playa","abbreviatedRaw": "Hotel Cordial Mogan Playa","abbreviatedStateTerritory": "Hotel Cordial Mogan Playa","abbreviatedStateTerritoryRaw": "Hotel Cordial Mogan Playa"},"parent": {"locationId": 187471,"additionalNames": {"normal": "Gran Canaria","long": "Gran Canaria, Spain","longOnlyParent": "Spain","longParentAbbreviated": "Gran Canaria, Spain","longOnlyParentAbbreviated": "Spain","longParentStateAbbreviated": "Gran Canaria, Spain","longOnlyParentStateAbbreviated": "Spain","geo": "Gran Canaria","abbreviated": "Gran Canaria","abbreviatedRaw": "Gran Canaria","abbreviatedStateTerritory": "Gran Canaria","abbreviatedStateTerritoryRaw": "Gran Canaria"}}},"createdDate": "2021-01-06","publishedDate": "2021-01-06","provider": {"isLocalProvider": true,"isToolsProvider": true},"userProfile": {"id": "63A449F68F3328E582979E7BC8F5D5E3","userId": "63A449F68F3328E582979E7BC8F5D5E3","isMe": false,"isVerified": false,"displayName": "kattullus","username": "kattullus","avatar": {"id": 120146276,"photoSizes": []},"hometown": {"locationId": 189852,"fallbackString": "189852","location": {"locationId": 189852,"additionalNames": {"long": "Stockholm, Sweden"},"name": "Stockholm"}},"contributionCounts": {"sumAllUgc": 890,"helpfulVote": 150},"route": {"url": "/Profile/kattullus"},"isFollowing": false},"title": "Did not stay but want to applaud the fantastic New Year's buffet","language": "en","translationType": null,"roomTip": null,"tripInfo": {"stayDate": "2020-12-31","tripType": "NONE"},"additionalRatings": [{"rating": 4,"ratingLabel": "Location"},{"rating": 5,"ratingLabel": "Service"},{"rating": 5,"ratingLabel": "Sleep Quality"}],"text": "The New Year's buffet was arguably the finest buffet we have enjoyed. Hundreds of dishes, all beautifully presented and delicious. Wines/beer included and the cost very reasonable. The venue is fantastic and in itself worth a detour!","username": "kattullus","connectionToSubject": null,"locationId": 559667,"rating": 5,"absoluteUrl": "https://www.tripadvisor.com/ShowUserReviews-g664857-d559667-r780641546-Hotel_Cordial_Mogan_Playa-Puerto_de_Mogan_Mogan_Gran_Canaria_Canary_Islands.html","mcid": 53922,"mtProviderId": 0,"photos": [],"original": null,"attribution": null,"__typename": "Review","helpfulVotes": 0,"photoIds": [],"route": {"url": "/ShowUserReviews-g664857-d559667-r780641546-Hotel_Cordial_Mogan_Playa-Puerto_de_Mogan_Mogan_Gran_Canaria_Canary_Islands.html"},"originalLanguage": "en","labels": [],"alertStatus": false}

    讓我們僅解析此文檔以生成我們的數據庫:

    data = []for hotel_url in listings:response = request_graphql(hotel_url)[1]['data']['locations'][0]hotel_name = response['name']print(f'Scraping {hotel_name}')# Get total review counttotal_reviews = response['reviewListPage']['totalCount']# Get number of pages to get all the reviewspages = math.ceil(total_reviews / 20)pages = min(MAX_PAGES, pages)# Iterate through every possible page to get all the reviewsfor i in range(pages):# Sleep random seconds to avoid blockingtime.sleep(random.randint(1, 3))# Get the GraphQL response for each pageresponse = request_graphql(hotel_url, page=i)[1]['data']['locations'][0]# Get the reviews from each responsereviews = response['reviewListPage']['reviews'] if response['reviewListPage'] is not None else []# Add each review to the arrayfor review in reviews:review_title = review['title']review_description = review['text']location = review['location']['parent']['additionalNames']['normal']review_data = {'Hotel Name': hotel_name,'Review Date': review['createdDate'],'Stay Date': review['tripInfo']['stayDate'] if review['tripInfo'] is not None else None,'Location': location,'Lang': review['language'],'Room Tip': review['roomTip'] if 'roomTip' in review else None,'Review Title': review_title,'Review Stars': review['rating'],'Review': review_description,'User Name': review['userProfile']['displayName'] if review['userProfile'] else None,'Hometown': review['userProfile']['hometown']['location']['additionalNames']['long'] if review['userProfile'] is not None and review['userProfile']['hometown']['location'] is not None else None}# Iterate through additionalRatings (Cleanliness, Room Service...)for rating in review['additionalRatings']:review_data[f'{rating["ratingLabel"]} Stars'] = rating['rating']data.append(review_data)print(f'Reviews: {len(data)}')

    現在,我們已經填滿了數組(這可能會花費很多時間,具體取決于您需要的酒店數量),讓我們生成一個熊貓DataFrame并將結果存儲為CSV格式:

    df = pd.DataFrame(data)df.to_csv('./reviews.csv', index=False, encoding='utf-8-sig', sep=';')df.head()

    概要

    我們已經學習了如何利用TripAdvisor GraphQL端點從酒店列表中請求所有評論,最終生成結構化的CSV文件,可將其用于進一步的ML分析。

    在這里還是要推薦下我自己建的Python學習群:553215015,群里都是學Python的,如果你想學或者正在學習Python ,歡迎你加入,大家都是軟件開發黨,不定期分享干貨(只有Python軟件開發相關的),包括我自己整理的一份2020最新的Python進階資料和零基礎教學,歡迎進階中和對Python感興趣的小伙伴加入!
    ?

    總結

    以上是生活随笔為你收集整理的如何用Python从TripAdvisor抓取数十万条酒店评论的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    黄色片免费电影 | 色综合咪咪久久网 | 久久久久激情电影 | 欧美最猛性xxx | 色搞搞 | 波多野结衣最新 | 国产 在线 高清 精品 | 久久www免费人成看片高清 | 国产高清视频免费在线观看 | 99视频国产在线 | 国产精品久久久久久久久免费 | 国产色小视频 | 欧洲一区精品 | 91你懂的 | 91九色免费视频 | 日精品| 亚洲九九九| 日韩欧美视频在线免费观看 | 国产人免费人成免费视频 | 亚洲人成人天堂h久久 | 亚洲成aⅴ人在线观看 | 久久免费播放视频 | 国产精品国内免费一区二区三区 | 日本精品久久久久中文字幕5 | 日韩一区二区免费在线观看 | 狠狠色丁香久久婷婷综合_中 | 免费看网站在线 | 久久精品欧美一区 | 天天干天天做天天爱 | 日韩视频免费 | 日韩理论在线视频 | 久久免费中文视频 | 天堂资源在线观看视频 | 中文免费观看 | 精品国产资源 | 久久视屏网 | 美女视频a美女大全免费下载蜜臀 | 国产高清视频在线 | 黄av在线 | a v在线观看 | 日韩欧美在线观看 | 久草影视在线 | 久久国产电影 | 五月婷婷丁香色 | 久久免费久久 | 99久久久国产精品免费99 | 四虎永久网站 | 国产无吗一区二区三区在线欢 | 免费av免费观看 | 久久黄页 | 综合天堂av久久久久久久 | 久久精品美女视频网站 | 女人高潮特级毛片 | 五月婷婷视频在线观看 | 开心色婷婷 | 97国产情侣爱久久免费观看 | 欧美另类sm图片 | 五月天电影免费在线观看一区 | 天天干天天插伊人网 | 成人免费共享视频 | 日韩久久久| 久久久久女人精品毛片 | 午夜三级在线 | 久草网在线观看 | www色网站 | www.超碰 | 亚洲精品女 | 日韩中文字幕国产精品 | 国产又黄又爽又猛视频日本 | 亚洲精品h| 亚洲黄色片 | 久久国产精品久久精品国产演员表 | 久操中文字幕在线观看 | 91在线网址| 一区二区三区四区久久 | 色婷婷免费视频 | 久草久热| 国产99久久久精品视频 | 波多野结衣视频网址 | 国产亚洲婷婷免费 | 99久高清在线观看视频99精品热在线观看视频 | 波多野结衣在线视频免费观看 | 精品国产乱码久久久久久1区2匹 | 免费视频a | 久色伊人| 欧美在线资源 | www.精选视频.com | 国内精品视频一区二区三区八戒 | 欧美少妇18p | 日本久热| 99在线看| 在线亚洲精品 | 日韩精品在线免费观看 | 免费观看日韩av | 久久久不卡影院 | 男女激情免费网站 | 久久狠狠一本精品综合网 | 一区免费视频 | 国产精品av免费在线观看 | 久久久久黄 | 在线观看日本韩国电影 | 免费国产黄线在线观看视频 | 香蕉视频91 | 91精品久久久久久综合五月天 | 久久精品79国产精品 | 精品国产一区二区三区四区在线观看 | 97视频免费在线看 | 超碰个人在线 | 97视频在线观看网址 | 久久99热久久99精品 | 麻豆91精品| 亚洲精品视频在 | 久久免费大片 | 国产一级二级在线观看 | 午夜av剧场 | 亚洲欧美日韩精品久久奇米一区 | 91在线视频免费播放 | 狠狠久久婷婷 | 国产精品99久久久久久人免费 | 精品久久久久久久久中文字幕 | 日本公乱妇视频 | 欧美韩日在线 | 精品91在线 | 久久国内精品99久久6app | 狠狠综合| 日韩色一区二区三区 | 蜜臀av麻豆 | 国产色在线,com | 在线日本看片免费人成视久网 | 婷婷在线播放 | 国产中文视频 | 亚洲天堂网在线视频观看 | 久久久高清免费视频 | 伊人射| 狠狠干天天操 | 9在线观看免费高清完整 | 97在线资源 | 久久久免费网站 | 亚洲电影黄色 | 91精品一区国产高清在线gif | 亚洲乱码国产乱码精品天美传媒 | 99精品国产福利在线观看免费 | 超碰久热| 国产中文自拍 | 国产色道 | 亚洲精品乱码久久久一二三 | 久久国产香蕉视频 | 亚洲欧美日本一区二区三区 | 国产色在线 | 欧美激情视频久久 | 91麻豆福利 | 久草在线视频精品 | 香蕉视频91 | 欧美一级裸体视频 | 亚洲成a人片77777kkkk1在线观看 | 国内成人精品视频 | 99色婷婷| 精品久久久一区二区 | 国产精品久久久久久久久久不蜜月 | 啪啪激情网 | 国产一区二区播放 | 日韩网站视频 | 日本乱码在线 | 亚洲美女免费精品视频在线观看 | 欧美精品一区二区免费 | 久久国产亚洲精品 | 开心激情综合网 | 亚洲最大av网 | 婷婷久久亚洲 | 黄av资源| 精品久久久久久亚洲综合网 | 日本性xxxxx 亚洲精品午夜久久久 | 操操综合 | 国产精品视频专区 | 久久免费a | 久久网址 | 9免费视频 | 久久九九九九 | 色综合www| 久久综合九色九九 | 国产欧美精品在线观看 | 欧美美女激情18p | 免费色av| 亚洲国产精品成人va在线观看 | 天天久久夜夜 | 五月综合色 | 超碰人人在线观看 | 亚洲在线| 婷婷免费在线视频 | 右手影院亚洲欧美 | 蜜臀av免费一区二区三区 | 国产区精品在线 | 免费视频一区二区 | 午夜18视频在线观看 | 97人人澡人人爽人人模亚洲 | 国产永久免费 | 国产字幕在线观看 | 精品久久久久久亚洲综合网站 | 中文字幕在线免费看线人 | 麻豆传媒视频在线免费观看 | 91手机视频在线 | 日日夜夜天天干 | 久久成人18免费网站 | 又爽又黄又刺激的视频 | 97超碰在线久草超碰在线观看 | 亚洲国产中文字幕 | av免费在线免费观看 | av免费片 | 欧美性直播| 在线观看成年人 | 最近中文字幕高清字幕免费mv | 亚洲精品国产自产拍在线观看 | 日韩精品视频在线观看免费 | 日本中文字幕一二区观 | 六月激情丁香 | 久久久影片| 狠狠狠色丁香综合久久天下网 | 久久久久久国产精品久久 | 人人讲 | 亚洲精品国产综合久久 | 国产免费观看高清完整版 | 久久丁香 | 国产精品久久久久久69 | 中文在线最新版天堂 | 免费视频国产 | 欧美成人一区二区 | 中文字幕在线观看资源 | 亚洲欧洲精品一区二区精品久久久 | 中文字幕之中文字幕 | 久久影院午夜论 | 天天综合久久 | 97超碰在线播放 | 三级av免费 | 天天色天天操综合网 | 黄色网址中文字幕 | 国产免费高清 | 国内精品久久久久影院日本资源 | 国产高清一| 视频福利在线观看 | 久草视频手机在线 | 亚洲黄色成人av | 国产99自拍| 五月天婷婷在线观看视频 | 天天爽天天爽 | 成人免费观看完整版电影 | 狠狠夜夜 | 久久se视频 | 精品九九九| 日韩免费观看高清 | 免费在线观看中文字幕 | 国产高清亚洲 | 美女免费视频黄 | 四虎小视频 | 九九久久国产精品 | 五月婷婷色丁香 | 日韩www在线 | 99这里只有精品视频 | 成人91在线 | 午夜少妇一区二区三区 | 在线免费av网站 | 色偷偷人人澡久久超碰69 | 狠狠狠操| 久久人人97超碰com | 激情久久伊人 | 一区二区三区在线观看 | 亚洲天天在线日亚洲洲精 | 国产专区视频在线观看 | 91在线超碰 | 国产高清视频免费 | 成人国产精品一区二区 | 国内久久久久久 | 亚洲精品在线视频观看 | 亚洲激情综合 | 超碰在线观看av | 91在线色| 99c视频在线 | 97色婷婷人人爽人人 | 美女国产免费 | 福利区在线观看 | 少妇精品久久久一区二区免费 | 日韩欧美在线一区二区 | 日韩精品一区二区三区在线播放 | 亚洲精品国偷拍自产在线观看蜜桃 | 91精品国产自产老师啪 | 国产黄色片一级三级 | 久久免费精品 | 又黄又爽又无遮挡免费的网站 | 五月综合婷 | 成人性生交大片免费观看网站 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久高清免费观看 | 久久99热久久99精品 | 91视频免费 | 亚洲人av免费网站 | 香蕉久久久久 | 国产高清精品在线 | 欧美一区二区三区特黄 | 久久国产美女 | 色婷婷综合久久久久中文字幕1 | 91香蕉视频黄色 | 中文字幕一区二区三区视频 | 天天干天天射天天插 | 免费黄色一区 | 91豆麻精品91久久久久久 | 亚洲国产精品成人精品 | 色网站在线看 | 国产网站在线免费观看 | 天天色天天综合网 | 久草在线欧美 | 中文字幕国产一区二区 | 一区二区不卡 | 国产在线高清精品 | 99热在线观看免费 | 色婷婷av在线 | 婷婷激情综合网 | 久99视频| 亚洲视频 视频在线 | 国产在线毛片 | 免费av在| 免费视频黄色 | 欧美激情综合五月色丁香小说 | 在线免费观看黄网站 | 国产美腿白丝袜足在线av | 精品视频一区在线 | 依人成人综合网 | 国产一级一片免费播放放 | 日本一区二区三区视频在线播放 | 亚洲国产精品视频在线观看 | a特级毛片 | 五月天激情视频在线观看 | 日韩免费在线观看网站 | 麻豆一精品传二传媒短视频 | 国产成人精品一区二区三区福利 | 国产精品黄色影片导航在线观看 | 国产一区高清在线观看 | 亚洲狠狠干 | 亚洲精品久久激情国产片 | 美女禁18| 天天干.com | 欧美日韩一区二区在线观看 | 久草在线| 亚洲精品美女久久久久网站 | 狠狠久久综合 | 亚洲精品午夜久久久 | 又长又大又黑又粗欧美 | 中文字幕在线中文 | 亚洲国产精品女人久久久 | 国产精品99久久久久的智能播放 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 69av久久| av动态图片| 久草在线视频看看 | 成 人 黄 色 视频 免费观看 | 香蕉日日 | 色婷婷亚洲综合 | 国产精品乱码久久久久 | 天天射天天射天天射 | 日韩精品一区二区三区电影 | 婷婷激情五月综合 | 成人av高清在线观看 | 日韩素人在线观看 | 久久精品站 | 国产精品第三页 | 欧美日韩中文在线视频 | 色综合久久久久综合99 | 日日摸日日爽 | av官网| 免费久草视频 | av中文字幕第一页 | av资源中文字幕 | 在线日韩亚洲 | 人人干天天射 | 久久久久久久久影院 | 久热久草在线 | 国产手机视频在线播放 | 国产综合精品一区二区三区 | 国产成人亚洲在线观看 | 色资源网免费观看视频 | 婷婷色 亚洲 | 国产综合福利在线 | 成人免费观看a | 国产精品久久久久久久免费观看 | 中文字幕你懂的 | 日日精品| 五月婷婷色综合 | 麻豆首页| 深夜福利视频在线观看 | .精品久久久麻豆国产精品 亚洲va欧美 | 81国产精品久久久久久久久久 | 中文字幕 国产视频 | 日韩欧美国产成人 | 成人免费观看网址 | 日韩亚洲国产精品 | 一级黄色片毛片 | 久久人人爽人人爽人人片av免费 | 精品久久久久久国产偷窥 | 亚洲一级片在线观看 | av免费看在线 | 日本中文字幕在线一区 | 久久影视网 | 9在线观看免费高清完整版 玖玖爱免费视频 | 天天天天天操 | 国产一级电影免费观看 | 超级碰视频 | 亚洲免费av电影 | 日本最新高清不卡中文字幕 | 人人干在线| 中日韩三级视频 | 五月天丁香综合 | 亚洲视频精选 | 日韩一级网站 | 色综合网在线 | 国产亚洲免费的视频看 | 一区二区精品在线观看 | 粉嫩av一区二区三区四区在线观看 | 成人av动漫在线 | 欧美日韩在线免费观看 | 欧美国产日韩一区二区三区 | 免费成人在线网站 | 久久免费福利视频 | 网址你懂的在线观看 | 国内成人精品2018免费看 | 在线免费观看国产视频 | 国产精品中文久久久久久久 | 国产不卡视频在线 | 天天操操操操操 | 黄色1级大片 | 三级a视频| 97在线观看免费高清完整版在线观看 | 亚洲aⅴ免费在线观看 | 日韩成人邪恶影片 | 丁香六月婷婷开心婷婷网 | 国产精品久久久区三区天天噜 | 国产精品一区二区白浆 | 看毛片网站| 免费在线成人 | 成人国产精品一区 | 国产成人区 | 456免费视频| 久久99热久久99精品 | 麻豆网站免费观看 | www在线观看视频 | 免费看的黄色录像 | 国产一区二区在线看 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 久久精品久久久久久久 | 亚洲日本成人 | 成年人app网址| www.色com| 97超碰人人模人人人爽人人爱 | 狠狠综合久久av | 在线免费黄色av | 国产视频手机在线 | 黄av免费| 特级毛片在线观看 | 夜夜澡人模人人添人人看 | 超碰97.com| 久久久天堂 | 国产人在线成免费视频 | av电影在线免费 | 中文字幕免费一区二区 | 超碰在线最新地址 | www.av免费 | 精品国产欧美一区二区 | 国产精品一区在线播放 | 最新精品视频在线 | 免费看的黄网站软件 | 欧美福利片在线观看 | 97视频人人免费看 | 欧美一区二区三区在线播放 | 99国产精品久久久久老师 | 免费在线观看亚洲视频 | 欧美aa在线观看 | 天天干视频在线 | 国产精品一区二区三区四区在线观看 | 97色综合| 日本mv大片欧洲mv大片 | 亚洲动漫在线观看 | 中文字幕有码在线观看 | 欧美韩国日本在线 | 亚洲码国产日韩欧美高潮在线播放 | 成人久久毛片 | 成人免费视频免费观看 | 成人精品视频 | 亚洲精品自拍视频在线观看 | 成人一区电影 | 亚洲精品日韩一区二区电影 | 99国产情侣在线播放 | 97精品电影院 | 在线视频久久 | 国产精品亚洲片在线播放 | 天天操天天操天天操 | 日韩美在线 | 一级欧美一级日韩 | 欧美日韩视频一区二区 | 天天天天天干 | 亚洲经典精品 | 超碰在线人人 | 热99在线| 成人欧美一区二区三区黑人麻豆 | avhd高清在线谜片 | 中文字幕欲求不满 | 久久久久福利视频 | 中文在线天堂资源 | 欧美日韩精品免费观看视频 | 久久亚洲欧美日韩精品专区 | 涩涩资源网| 亚洲精品国产精品乱码在线观看 | 在线观看av中文字幕 | 日b视频国产 | 日日夜夜国产 | 午夜精品久久久久久久久久久久 | 97色婷婷成人综合在线观看 | 亚洲欧美视频在线 | 日b视频在线观看网址 | 久久亚洲私人国产精品va | 亚洲精品66 | 夜夜骑天天操 | 国产精品免费久久久久久久久久中文 | 久精品视频在线观看 | 久草在线视频精品 | 久久久久久中文字幕 | 国产成人av电影在线 | 91麻豆精品国产91久久久久久久久 | 国产99re| 美国三级黄色大片 | 婷婷亚洲激情 | 成人在线小视频 | 午夜精品一二三区 | 在线国产一区二区三区 | 在线观看韩国av | 日日夜夜天天射 | 国产精品免费视频网站 | 欧美坐爱视频 | 国产成人精品一区二区三区在线观看 | 久久电影国产免费久久电影 | 国产精品va在线观看入 | 在线中文字幕一区二区 | 久久国产精品偷 | 国产精品一区二区在线观看 | 永久免费av在线播放 | 18pao国产成视频永久免费 | 偷拍精偷拍精品欧洲亚洲网站 | 中文字幕在线播放av | 欧美巨乳网 | 米奇影视7777 | 久久成人久久 | 久久看看| 免费在线色电影 | 中中文字幕av| 天天色天天综合 | 免费黄在线看 | 五月婷在线视频 | 精品国产一区二区三区av性色 | 黄色av免费| 日韩女同一区二区三区在线观看 | 日韩在线播放av | 亚洲成人av免费 | 久久a国产 | 欧美污网站 | 69视频国产 | 亚洲国产精品日韩 | 婷婷网五月天 | 六月激情网 | 97精品国产97久久久久久 | 欧美在线不卡一区 | 免费一级日韩欧美性大片 | 国产高清视频免费最新在线 | 久久成人国产精品免费软件 | 日韩精品一卡 | 国产免费观看久久 | a一片一级 | 美女免费网站 | 亚洲最新在线 | av线上免费看| 在线视频黄 | 天天干夜夜干 | 国产高清成人 | 黄色大片中国 | 精品国产一区二区三区久久影院 | 午夜在线资源 | 成年人网站免费观看 | 国产一二三区av | 超碰在线中文字幕 | 亚洲a资源 | 日本性xxx| 日本久久99 | 欧美日韩二区在线 | 91香蕉国产在线观看软件 | 天天天天干 | 日本h视频在线观看 | 久久毛片高清国产 | 欧美激情精品久久久久 | 四虎影视国产精品免费久久 | 久久久2o19精品 | 国产精品1024 | 尤物九九久久国产精品的分类 | 久久96国产精品久久99漫画 | 一区二区三区中文字幕在线 | 最近中文字幕免费av | 国产精品免费视频观看 | 色综合久久五月 | 久久天堂网站 | 日本色小说视频 | 国产精品白虎 | 成 人 黄 色 视频 免费观看 | 婷婷丁香社区 | 中文字幕免费一区 | 91视频久久久 | 黄色福利| 在线免费观看涩涩 | 国产黄色片免费观看 | 热久在线 | 欧美日韩国产精品一区二区亚洲 | 成人a视频 | 日韩草比| 一级黄色a视频 | 国产精品一区二区果冻传媒 | 精品一区二区在线观看 | 免费在线观看av不卡 | 96亚洲精品久久 | 日韩精品在线视频免费观看 | 国产精品久久久久一区二区国产 | 99精品视频在线播放免费 | 久久精品国产一区二区电影 | 欧美激情第28页 | 久久精品成人 | 日韩欧美国产免费播放 | 国产自产高清不卡 | 中文字幕一区二区在线观看 | 999久久精品 | 99热999| 中文字幕五区 | 97电影手机 | 久久久久在线观看 | 国产麻豆精品久久一二三 | 国产精久久 | 最近日本字幕mv免费观看在线 | 成人一级免费视频 | 国精产品满18岁在线 | japanesexxxxfreehd乱熟 | av千婊在线免费观看 | 黄色美女免费网站 | 久久久精品一区二区 | 欧美日韩一区二区视频在线观看 | 伊人狠狠| 亚洲视频免费在线观看 | 91av99| 久草国产在线观看 | 欧美一区二区三区免费观看 | 91在线播放视频 | 国产精品mm| 国产视频一区在线免费观看 | 在线免费视 | 久久精品久久综合 | 日韩高清免费无专码区 | 欧美国产日韩一区二区三区 | 在线激情影院一区 | 99精品久久久久久久久久综合 | 91中文字幕永久在线 | 国产精品久久久久高潮 | 91在线porny国产在线看 | 黄污网站在线观看 | 日本久久免费电影 | 国产中文字幕一区 | 天天射天天干天天操 | 99精品免费| 成人综合免费 | 国产日韩欧美综合在线 | 狠狠天天| 国产视频 亚洲精品 | 久久久久国产精品一区二区 | 国产成人av电影在线 | 开心综合网| 美女视频黄免费的 | 少妇视频在线播放 | 黄色一级大片在线免费看产 | 日韩免费观看一区二区 | 91成人看片 | 视频在线观看国产 | 在线亚洲精品 | 五月婷婷影院 | 亚洲成人免费在线 | 午夜在线国产 | 私人av| 国产免费专区 | 亚洲天堂在线观看完整版 | 在线观看视频 | 国产精品99爱 | 91天天视频 | 亚洲精品久久久久久久不卡四虎 | www.国产精品 | 色综合中文字幕 | 国产黄网在线 | 国产96精品| 蜜臀久久99精品久久久无需会员 | www.狠狠插.com | 超碰在线人人草 | 国产精品久久久久久久久久久久久久 | 久久99国产视频 | 欧美亚洲久久 | 丁香婷婷社区 | 最新av免费在线 | 日韩理论片| 人人爽人人爽人人爽人人爽 | 国产网红在线 | 天天操操 | 福利一区在线视频 | 中文字幕在线播出 | 国产精品久久久亚洲 | 日日夜精品 | 在线观看日韩国产 | 精品在线亚洲视频 | 波多野结衣视频一区二区三区 | 日韩精品一区二区免费视频 | 看v片 | 亚洲一级免费电影 | 久久精品国产一区 | 国产在线久久久 | 伊人色综合久久天天网 | 香蕉视频在线免费看 | 欧美日韩高清不卡 | 久久黄色成人 | av超碰在线观看 | 五月天婷婷狠狠 | 中文字幕在线观看日本 | .国产精品成人自产拍在线观看6 | 亚洲午夜精品一区二区三区电影院 | av成人资源 | www视频免费在线观看 | 久久一区二区三区日韩 | 青草视频免费观看 | 日韩在线视 | 91精彩视频在线观看 | 综合久久精品 | 又色又爽又黄高潮的免费视频 | 中文字幕精品三区 | 欧美日韩中文在线观看 | 久草资源在线 | 中文字幕日韩av | 国产四虎影院 | 亚洲va在线va天堂va偷拍 | 欧美日韩一区二区在线观看 | 国产成人av电影在线观看 | 色综合久久88色综合天天人守婷 | 亚洲高清av| 精品一区av| 国产成人精品综合久久久 | 黄色小网站免费看 | 国产精品黑丝在线观看 | 中文字幕乱码亚洲精品一区 | 亚洲精品视频在线免费 | 97免费视频在线 | 国产精品久久久久久久久久久久 | 毛片一区二区 | 亚洲视频999 | 夜夜骑首页 | 国产一区在线观看免费 | 91超级碰| 三级av免费看| 欧美久久久久久久久久久久久 | 五月婷婷一级片 | 天天操天天舔天天爽 | 成人黄在线观看 | 亚州精品在线视频 | 精品国产精品一区二区夜夜嗨 | 国产中文在线播放 | 精品久久综合 | 999久久久| 最新国产精品久久精品 | 91精品国产九九九久久久亚洲 | 日本精品久久久久中文字幕 | 在线 日韩 av | 五月天婷婷狠狠 | 国产资源免费 | 国产一区在线视频播放 | 成人性生活大片 | 欧美一级日韩三级 | 天天干天天射天天操 | 国产精品综合久久久久久 | 在线视频1卡二卡三卡 | av电影在线播放 | 精品在线一区二区三区 | 国产精品成人免费一区久久羞羞 | 91av观看 | 国产在线美女 | 久久高清毛片 | 麻豆91在线看 | 最近中文字幕免费 | 免费人成在线观看网站 | 成人夜晚看av | 99久久影视 | 天天射天天干天天操 | 粉嫩av一区二区三区入口 | 美女又爽又黄 | 伊人天天狠天天添日日拍 | 黄色毛片观看 | 久久成人午夜视频 | 天天色成人 | 日韩欧美视频在线免费观看 | 亚洲最新视频在线播放 | www黄免费| 91亚洲网| 黄色在线视频网址 | 91天堂在线观看 | 久久久久久久久影院 | 亚洲国产精品成人va在线观看 | 国产不卡高清 | 中文字幕永久免费 | 国产精品对白一区二区三区 | 成人理论电影 | 五月婷婷一区二区三区 | 国产精品99久久久久久人免费 | 久草在线免费在线观看 | 国产午夜精品久久久久久久久久 | 欧美一级黄色网 | 亚洲精品美女在线 | 国产成人精品一区二区三区网站观看 | 天天做日日做天天爽视频免费 | 国产亚洲综合在线 | 久久综合精品国产一区二区三区 | 91av在线免费观看 | 亚洲精品视频在线观看免费 | 亚洲精品高清一区二区三区四区 | 欧美日韩国产一区 | 免费精品在线视频 | 热99在线视频 | 日韩欧美99 | 免费福利片| 五月天婷亚洲天综合网精品偷 | 国产精彩视频一区二区 | 在线看小早川怜子av | 欧美精品一区二区三区一线天视频 | 夜夜躁日日躁狠狠久久av | 91精品视频一区 | 国产色资源 | 免费观看特级毛片 | 波多野结衣视频一区二区三区 | 成人教育av | 中文字幕传媒 | 日韩a欧美| 九九九九色 | 麻豆综合网 | 亚洲精品美女久久久 | 亚洲欧美在线综合 | 久久8精品| 国产午夜激情视频 | 免费高清av在线看 | 日本黄色免费看 | 色资源在线观看 | 黄色一级免费 | 91免费高清在线观看 | 日韩欧美视频在线观看免费 | 最新av在线网站 | 成年人视频在线观看免费 | 久久艹精品 | 国内精品久久久久久久久久 | 久久精品日韩 | 成年人免费在线观看网站 | 在线免费观看国产黄色 | 久久一久久| 久久免费视频3 | 日韩欧美在线一区 | www日韩在线 | 色综合久久久久久中文网 | 99免费在线视频 | 国产九色91 | aaa日本高清在线播放免费观看 | 欧美日韩国产亚洲乱码字幕 | 亚洲精品国产精品乱码在线观看 | av超碰免费在线 | 亚洲一区av | 色视频网址 | 国产视频69 | 99国产精品一区 | 国产人成在线观看 | 91九色porny在线 | 激情综合电影网 | 日韩一二三区不卡 | 999成人国产 | 欧美激情精品久久久久 | 这里有精品在线视频 | 黄影院 | 亚洲精品免费在线观看 | 91精品欧美一区二区三区 | 日韩av免费在线看 | 色婷婷激情网 | 日韩在线观看高清 | 国产中文字幕91 | 国产精品自在欧美一区 | 国产自偷自拍 | 免费网站看av片 | av不卡免费在线观看 | 香蕉视频导航 | 成年美女黄网站色大片免费看 | 黄网站色欧美视频 | 麻豆国产在线视频 | 国产成人精品亚洲 | 日韩乱码中文字幕 | 国产亚洲精品久久久久久大师 | 婷婷久久国产 | 国产99久久九九精品免费 | 99久久er热在这里只有精品66 | 欧美日韩中文国产一区发布 | 国产免费视频一区二区裸体 | 亚洲女同videos| 日韩精品视频一二三 | 日韩电影中文,亚洲精品乱码 | 九九综合在线 | 日本中文字幕观看 | 福利视频入口 | 狠狠干成人综合网 | 伊人六月| 成人在线视频网 | 99久久久国产精品美女 | 午夜久久电影网 | 国产在线观看,日本 | 日韩欧美一区二区三区免费观看 | 96久久 | 少妇bbw搡bbbb搡bbbb | caobi视频| 2019中文字幕网站 | 欧美一级视频免费看 | 成人片在线播放 | 国产一级二级在线观看 | 欧美精品九九99久久 | 手机在线小视频 | 国产精品久久艹 | 久久精品视频在线观看免费 | 最近日本字幕mv免费观看在线 | 久久再线视频 | 日本在线观看中文字幕 | 在线观看免费一级片 | 91九色性视频 | 欧美在线1 | 成年人在线电影 | www.狠狠插.com| 国产精品一区二区三区免费看 | 久久久久久久久久免费视频 | 97香蕉超级碰碰久久免费软件 | 天天操天天射天天爱 | 久久综合之合合综合久久 | 国产成人精品综合久久久 | 狠狠狠色丁香婷婷综合久久五月 | 免费久久视频 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 天天射天天爽 | 国产精品久久久久久久久免费看 | 亚洲精品视频在 | 成人在线观看免费视频 | 看全黄大色黄大片 | 综合婷婷久久 | 婷婷五天天在线视频 | 久草精品在线观看 | 91精品久久久久久久久 | 草久久久久久 | 97在线影视 | av手机版| 久久大香线蕉app | 日韩中文三级 | 91视频久久久久久 | 免费h精品视频在线播放 | 色av男人的天堂免费在线 | 国产一区免费在线观看 | 国产在线色视频 | 成人精品久久久 | 激情婷婷综合 | 天天色天天上天天操 | 亚洲涩涩涩 | 精品久久久久久一区二区里番 | 免费观看黄色av | 欧美俄罗斯性视频 | 一本一本久久a久久 | 日本精品xxxx | 日本性生活一级片 | 99精品视频一区二区 | www.com久久 | 日韩欧美精品一区二区三区经典 | 免费在线国产精品 | 日日夜夜天天久久 | 国产在线观看中文字幕 | 成人中文字幕av | 97在线播放 | 亚洲激情一区二区三区 | 久久久久国产成人精品亚洲午夜 | 日韩av中文字幕在线 | 亚洲高清在线视频 | 99精品免费网 | 又黄又刺激又爽的视频 | 久色婷婷 | 一级性av | 在线天堂中文在线资源网 | 日韩毛片在线一区二区毛片 | 91最新在线视频 | 久在线 | 91大神电影 | 久久一区二区三区日韩 | 一区二区三区四区五区在线视频 |