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

歡迎訪問 生活随笔!

生活随笔

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

python

Python 爬虫利器二之 Beautiful Soup 的用法

發(fā)布時間:2023/12/9 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 爬虫利器二之 Beautiful Soup 的用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上一節(jié)我們介紹了正則表達式,它的內(nèi)容其實還是蠻多的,如果一個正則匹配稍有差池,那可能程序就處在永久的循環(huán)之中,而且有的小伙伴們也對寫正則表達式的寫法用得不熟練,沒關(guān)系,我們還有一個更強大的工具,叫 Beautiful Soup,有了它我們可以很方便地提取出 HTML 或 XML 標簽中的內(nèi)容,實在是方便,這一節(jié)就讓我們一起來感受一下 Beautiful Soup 的強大吧。

資料

https://cuiqingcai.com/1319.html
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

1. Beautiful Soup 的簡介

簡單來說,Beautiful Soup 是 python 的一個庫,最主要的功能是從網(wǎng)頁抓取數(shù)據(jù)。官方解釋如下:

Beautiful Soup 提供一些簡單的、python 式的函數(shù)用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程序。 Beautiful Soup 自動將輸入文檔轉(zhuǎn)換為 Unicode 編碼,輸出文檔轉(zhuǎn)換為 utf-8 編碼。你不需要考慮編碼方式,除非文檔沒有指定一個編碼方式,這時,Beautiful Soup 就不能自動識別編碼方式了。然后,你僅僅需要說明一下原始編碼方式就可以了。 Beautiful Soup 已成為和 lxml、html6lib 一樣出色的 python 解釋器,為用戶靈活地提供不同的解析策略或強勁的速度。

廢話不多說,我們來試一下吧~

2. Beautiful Soup 安裝

Beautiful Soup 3 目前已經(jīng)停止開發(fā),推薦在現(xiàn)在的項目中使用 Beautiful Soup 4,不過它已經(jīng)被移植到 BS4 了,也就是說導入時我們需要 import bs4 。所以這里我們用的版本是 Beautiful Soup 4.3.2 (簡稱 BS4),另外據(jù)說 BS4 對 Python3 的支持不夠好,不過我用的是 Python2.7.7,如果有小伙伴用的是 Python3 版本,可以考慮下載 BS3 版本。 可以利用 pip 或者 easy_install 來安裝,以下兩種方法均可

easy_install beautifulsoup4 pip install beautifulsoup4

如果想安裝最新的版本,請直接下載安裝包來手動安裝,也是十分方便的方法。在這里我安裝的是 Beautiful Soup 4.3.2 Beautiful Soup 3.2.1Beautiful Soup 4.3.2 下載完成之后解壓 運行下面的命令即可完成安裝

sudo python setup.py install

然后需要安裝 lxml

easy_install lxml pip install lxml

另一個可供選擇的解析器是純 Python 實現(xiàn)的 html5lib , html5lib 的解析方式與瀏覽器相同,可以選擇下列方法來安裝 html5lib:

easy_install html5lib pip install html5lib

Beautiful Soup 支持 Python 標準庫中的 HTML 解析器,還支持一些第三方的解析器,如果我們不安裝它,則 Python 會使用 Python 默認的解析器,lxml 解析器更加強大,速度更快,推薦安裝。

解析器使用方法優(yōu)勢劣勢
Python 標準庫BeautifulSoup(markup, “html.parser”)Python 的內(nèi)置標準庫,執(zhí)行速度適中文檔容錯能力強Python 2.7.3 or 3.2.2) 前 的版本中文檔容錯能力差
lxml HTML 解析器BeautifulSoup(markup, “l(fā)xml”)速度快,文檔容錯能力強需要安裝 C 語言庫
lxml XML 解析器BeautifulSoup(markup, [“l(fā)xml”, “xml”])BeautifulSoup(markup, “xml”)速度快,唯一支持 XML 的解析器需要安裝 C 語言庫
html5libBeautifulSoup(markup, “html5lib”)最好的容錯性,以瀏覽器的方式解析文檔,生成 HTML5 格式的文檔,不依賴外部擴展速度慢

3. 開啟 Beautiful Soup 之旅

在這里先分享官方文檔鏈接,不過內(nèi)容是有些多,也不夠條理,在此本文章做一下整理方便大家參考。 官方文檔

4. 創(chuàng)建 Beautiful Soup 對象

首先必須要導入 bs4 庫

from bs4 import BeautifulSoup
我們創(chuàng)建一個字符串,后面的例子我們便會用它來演示

html = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="title" name="dromouse"><b>The Dormouse's story</b></p> <p class="story">Once upon a time there were three little sisters; and their names were <a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>, <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>; and they lived at the bottom of a well.</p> <p class="story">...</p> """

創(chuàng)建 beautifulsoup 對象

soup = BeautifulSoup(html)

另外,我們還可以用本地 HTML 文件來創(chuàng)建對象,例如

soup = BeautifulSoup(open('index.html'))

上面這句代碼便是將本地 index.html 文件打開,用它來創(chuàng)建 soup 對象 下面我們來打印一下 soup 對象的內(nèi)容,格式化輸出

print soup.prettify() <html><head><title>The Dormouse's story</title></head><body><p class="title" name="dromouse"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>,<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>and<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>; and they lived at the bottom of a well.</p><p class="story">...</p></body> </html>

以上便是輸出結(jié)果,格式化打印出了它的內(nèi)容,這個函數(shù)經(jīng)常用到,小伙伴們要記好咯。

5. 四大對象種類

Beautiful Soup 將復雜 HTML 文檔轉(zhuǎn)換成一個復雜的樹形結(jié)構(gòu),每個節(jié)點都是 Python 對象,所有對象可以歸納為 4 種:

  • Tag
  • NavigableString
  • BeautifulSoup
  • Comment

下面我們進行一一介紹

(1)Tag

Tag 是什么?通俗點講就是 HTML 中的一個個標簽,例如

<title>The Dormouse's story</title> <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>

上面的 title a 等等 HTML 標簽加上里面包括的內(nèi)容就是 Tag,下面我們來感受一下怎樣用 Beautiful Soup 來方便地獲取 Tags 下面每一段代碼中注釋部分即為運行結(jié)果

print soup.title <title>The Dormouse's story</title> print soup.head <head><title>The Dormouse's story</title></head> print soup.a <a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a> print soup.p <p class="title" name="dromouse"><b>The Dormouse's story</b></p>

我們可以利用 soup 加標簽名輕松地獲取這些標簽的內(nèi)容,是不是感覺比正則表達式方便多了?不過有一點是,它查找的是在所有內(nèi)容中的第一個符合要求的標簽,如果要查詢所有的標簽,我們在后面進行介紹。 我們可以驗證一下這些對象的類型

print type(soup.a) <class 'bs4.element.Tag>

對于 Tag,它有兩個重要的屬性,是 name 和 attrs,下面我們分別來感受一下 name

print soup.name print soup.head.name[document] head

soup 對象本身比較特殊,它的 name 即為 [document],對于其他內(nèi)部標簽,輸出的值便為標簽本身的名稱。 attrs

print soup.p.attrs {'class': ['title'], 'name': 'dromouse'}

在這里,我們把 p 標簽的所有屬性打印輸出了出來,得到的類型是一個字典。 如果我們想要單獨獲取某個屬性,可以這樣,例如我們獲取它的 class 叫什么

print soup.p['class'] ['title']

還可以這樣,利用 get 方法,傳入屬性的名稱,二者是等價的

print soup.p.get('class') ['title']

我們可以對這些屬性和內(nèi)容等等進行修改,例如

soup.p['class']="newClass" print soup.p <p class="newClass" name="dromouse"><b>The Dormouse's story</b></p>

還可以對這個屬性進行刪除,例如

del soup.p['class'] print soup.p <p name="dromouse"><b>The Dormouse's story</b></p>

不過,對于修改刪除的操作,不是我們的主要用途,在此不做詳細介紹了,如果有需要,請查看前面提供的官方文檔

(2)NavigableString

既然我們已經(jīng)得到了標簽的內(nèi)容,那么問題來了,我們要想獲取標簽內(nèi)部的文字怎么辦呢?很簡單,用 .string 即可,例如

print soup.p.string The Dormouse's story

這樣我們就輕松獲取到了標簽里面的內(nèi)容,想想如果用正則表達式要多麻煩。它的類型是一個 NavigableString,翻譯過來叫 可以遍歷的字符串,不過我們最好還是稱它英文名字吧。 來檢查一下它的類型

print type(soup.p.string) <class 'bs4.element.NavigableString'>

(3)BeautifulSoup

BeautifulSoup 對象表示的是一個文檔的全部內(nèi)容。大部分時候,可以把它當作 Tag 對象,是一個特殊的 Tag,我們可以分別獲取它的類型,名稱,以及屬性來感受一下

print type(soup.name) <type 'unicode'> print soup.name [document] print soup.attrs {} 空字典

(4)Comment

Comment 對象是一個特殊類型的 NavigableString 對象,其實輸出的內(nèi)容仍然不包括注釋符號,但是如果不好好處理它,可能會對我們的文本處理造成意想不到的麻煩。 我們找一個帶注釋的標簽

print soup.a print soup.a.string print type(soup.a.string)

運行結(jié)果如下

<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>Elsie <class 'bs4.element.Comment'>

a 標簽里的內(nèi)容實際上是注釋,但是如果我們利用 .string 來輸出它的內(nèi)容,我們發(fā)現(xiàn)它已經(jīng)把注釋符號去掉了,所以這可能會給我們帶來不必要的麻煩。 另外我們打印輸出下它的類型,發(fā)現(xiàn)它是一個 Comment 類型,所以,我們在使用前最好做一下判斷,判斷代碼如下

if type(soup.a.string)==bs4.element.Comment:print soup.a.string

上面的代碼中,我們首先判斷了它的類型,是否為 Comment 類型,然后再進行其他操作,如打印輸出。

6. 遍歷文檔樹

(1)直接子節(jié)點

要點:.contents .children 屬性

.contents tag 的 .content 屬性可以將 tag 的子節(jié)點以列表的方式輸出

print soup.head.contents [<title>The Dormouse's story</title>]

輸出方式為列表,我們可以用列表索引來獲取它的某一個元素

print soup.head.contents[0] <title>The Dormouse's story</title>

.children 它返回的不是一個 list,不過我們可以通過遍歷獲取所有子節(jié)點。 我們打印輸出 .children 看一下,可以發(fā)現(xiàn)它是一個 list 生成器對象

print soup.head.children <listiterator object at 0x7f71457f5710>

我們怎樣獲得里面的內(nèi)容呢?很簡單,遍歷一下就好了,代碼及結(jié)果如下

for child in soup.body.children:print child<p class="title" name="dromouse"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were <a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> and <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>; and they lived at the bottom of a well.</p><p class="story">...</p>

(2)所有子孫節(jié)點

知識點:.descendants 屬性

.descendants .contents 和 .children 屬性僅包含 tag 的直接子節(jié)點,.descendants 屬性可以對所有 tag 的子孫節(jié)點進行遞歸循環(huán),和 children 類似,我們也需要遍歷獲取其中的內(nèi)容。

for child in soup.descendants:print child

運行結(jié)果如下,可以發(fā)現(xiàn),所有的節(jié)點都被打印出來了,先生最外層的 HTML 標簽,其次從 head 標簽一個個剝離,以此類推。

<html><head><title>The Dormouse's story</title></head> <body> <p class="title" name="dromouse"><b>The Dormouse's story</b></p> <p class="story">Once upon a time there were three little sisters; and their names were <a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> and <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>; and they lived at the bottom of a well.</p> <p class="story">...</p> </body></html> <head><title>The Dormouse's story</title></head> <title>The Dormouse's story</title> The Dormouse's story<body> <p class="title" name="dromouse"><b>The Dormouse's story</b></p> <p class="story">Once upon a time there were three little sisters; and their names were <a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> and <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>; and they lived at the bottom of a well.</p> <p class="story">...</p> </body><p class="title" name="dromouse"><b>The Dormouse's story</b></p> <b>The Dormouse's story</b> The Dormouse's story<p class="story">Once upon a time there were three little sisters; and their names were <a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> and <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>; and they lived at the bottom of a well.</p> Once upon a time there were three little sisters; and their names were<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>Elsie ,<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> Lacieand<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a> Tillie ; and they lived at the bottom of a well.<p class="story">...</p> ...

(3)節(jié)點內(nèi)容
知識點:.string 屬性

如果 tag 只有一個 NavigableString 類型子節(jié)點,那么這個 tag 可以使用 .string 得到子節(jié)點。如果一個 tag 僅有一個子節(jié)點,那么這個 tag 也可以使用 .string 方法,輸出結(jié)果與當前唯一子節(jié)點的 .string 結(jié)果相同。 通俗點說就是:如果一個標簽里面沒有標簽了,那么 .string 就會返回標簽里面的內(nèi)容。如果標簽里面只有唯一的一個標簽了,那么 .string 也會返回最里面的內(nèi)容。例如

print soup.head.string The Dormouse's story print soup.title.string The Dormouse's story

如果 tag 包含了多個子節(jié)點,tag 就無法確定,string 方法應該調(diào)用哪個子節(jié)點的內(nèi)容,.string 的輸出結(jié)果是 None

print soup.html.string None

(4)多個內(nèi)容

知識點: .strings .stripped_strings 屬性

.strings 獲取多個內(nèi)容,不過需要遍歷獲取,比如下面的例子

for string in soup.strings:print(repr(string))u"The Dormouse's story" u'\n' u'\n' u"The Dormouse's story" u'\n' u'Once upon a time there were three little sisters; and their names were\n' u',\n' u'Lacie' u' and\n' u'Tillie' u';\nand they lived at the bottom of a well.' u'\n' u'...' u'\n'

.stripped_strings 輸出的字符串中可能包含了很多空格或空行,使用 .stripped_strings 可以去除多余空白內(nèi)容

for string in soup.stripped_strings:print(repr(string))u"The Dormouse's story" u"The Dormouse's story" u'Once upon a time there were three little sisters; and their names were' u',' u'Lacie' u'and' u'Tillie' u';\nand they lived at the bottom of a well.' u'...'

(5)父節(jié)點

知識點: .parent 屬性

p = soup.p print p.parent.name body content = soup.head.title.string print content.parent.name title

(6)全部父節(jié)點

知識點:.parents 屬性

通過元素的 .parents 屬性可以遞歸得到元素的所有父輩節(jié)點,例如

content = soup.head.title.string for parent in content.parents:print parent.name title head html [document]

(7)兄弟節(jié)點

知識點:.next_sibling .previous_sibling 屬性

兄弟節(jié)點可以理解為和本節(jié)點處在統(tǒng)一級的節(jié)點,.next_sibling 屬性獲取了該節(jié)點的下一個兄弟節(jié)點,.previous_sibling 則與之相反,如果節(jié)點不存在,則返回 None 注意:實際文檔中的 tag 的 .next_sibling 和 .previous_sibling 屬性通常是字符串或空白,因為空白或者換行也可以被視作一個節(jié)點,所以得到的結(jié)果可能是空白或者換行

print soup.p.next_sibling# 實際該處為空白print soup.p.prev_sibling None # 沒有前一個兄弟節(jié)點,返回 Noneprint soup.p.next_sibling.next_sibling <p class="story">Once upon a time there were three little sisters; and their names were <a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> and <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>; and they lived at the bottom of a well.</p># 下一個節(jié)點的下一個兄弟節(jié)點是我們可以看到的節(jié)點

(8)全部兄弟節(jié)點

知識點:.next_siblings .previous_siblings 屬性

通過 .next_siblings 和 .previous_siblings 屬性可以對當前節(jié)點的兄弟節(jié)點迭代輸出

for sibling in soup.a.next_siblings:print(repr(sibling))u',\n' <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a> u' and\n' <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a> u'; and they lived at the bottom of a well.' None

(9)前后節(jié)點

知識點:.next_element .previous_element 屬性

與 .next_sibling .previous_sibling 不同,它并不是針對于兄弟節(jié)點,而是在所有節(jié)點,不分層次 比如 head 節(jié)點為

<head><title>The Dormouse's story</title></head>

那么它的下一個節(jié)點便是 title,它是不分層次關(guān)系的

print soup.head.next_element <title>The Dormouse's story</title>

(10)所有前后節(jié)點

知識點:.next_elements .previous_elements 屬性

通過 .next_elements 和 .previous_elements 的迭代器就可以向前或向后訪問文檔的解析內(nèi)容,就好像文檔正在被解析一樣

for element in last_a_tag.next_elements:print(repr(element))u'Tillie' u';\nand they lived at the bottom of a well.' u'\n\n' <p class="story">...</p> u'...' u'\n' None

以上是遍歷文檔樹的基本用法。

7. 搜索文檔樹

(1)find_all( name , attrs , recursive , text , **kwargs )

find_all () 方法搜索當前 tag 的所有 tag 子節(jié)點,并判斷是否符合過濾器的條件

1)name 參數(shù)

name 參數(shù)可以查找所有名字為 name 的 tag, 字符串對象會被自動忽略掉

  • A. 傳字符串 最簡單的過濾器是字符串。在搜索方法中傳入一個字符串參數(shù),Beautiful Soup 會查找與字符串完整匹配的內(nèi)容,下面的例子用于查找文檔中所有的標簽
soup.find_all('b') [<b>The Dormouse's story</b>] print soup.find_all('a') [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
  • B. 傳正則表達式 如果傳入正則表達式作為參數(shù),Beautiful Soup 會通過正則表達式的 match () 來匹配內(nèi)容。下面例子中找出所有以 b 開頭的標簽,這表示 和標簽都應該被找到
import re for tag in soup.find_all(re.compile("^b")):print(tag.name)body b
  • C. 傳列表 如果傳入列表參數(shù),Beautiful Soup 會將與列表中任一元素匹配的內(nèi)容返回。下面代碼找到文檔中所有標簽和標簽
soup.find_all(["a", "b"]) [<b>The Dormouse's story</b>,<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
  • D. 傳 True True 可以匹配任何值,下面代碼查找到所有的 tag, 但是不會返回字符串節(jié)點
for tag in soup.find_all(True):print(tag.name)html head title body p b p a a
  • E. 傳方法 如果沒有合適過濾器,那么還可以定義一個方法,方法只接受一個元素參數(shù) [4] , 如果這個方法返回 True 表示當前元素匹配并且被找到,如果不是則反回 False 下面方法校驗了當前元素,如果包含 class 屬性卻不包含 id 屬性,那么將返回 True:
def has_class_but_no_id(tag):return tag.has_attr('class') and not tag.has_attr('id')

將這個方法作為參數(shù)傳入 find_all () 方法,將得到所有

標簽:

soup.find_all(has_class_but_no_id) [<p class="title"><b>The Dormouse's story</b></p>,<p class="story">Once upon a time there were...</p>,<p class="story">...</p>]

2)keyword 參數(shù)

注意:如果一個指定名字的參數(shù)不是搜索內(nèi)置的參數(shù)名,搜索時會把該參數(shù)當作指定名字 tag 的屬性來搜索,如果包含一個名字為 id 的參數(shù),Beautiful Soup 會搜索每個 tag 的”id” 屬性

soup.find_all(id='link2') [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]

如果傳入 href 參數(shù),Beautiful Soup 會搜索每個 tag 的”href” 屬性

soup.find_all(href=re.compile("elsie")) [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

使用多個指定名字的參數(shù)可以同時過濾 tag 的多個屬性

soup.find_all(href=re.compile("elsie"), id='link1') [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

在這里我們想用 class 過濾,不過 class 是 python 的關(guān)鍵詞,這怎么辦?加個下劃線就可以

soup.find_all("a", class_="sister")[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

有些 tag 屬性在搜索不能使用,比如 HTML5 中的 data-* 屬性

data_soup = BeautifulSoup('<div data-foo="value">foo!</div>') data_soup.find_all(data-foo="value")SyntaxError: keyword can't be an expression

但是可以通過 find_all () 方法的 attrs 參數(shù)定義一個字典參數(shù)來搜索包含特殊屬性的 tag

data_soup.find_all(attrs={"data-foo": "value"}) [<div data-foo="value">foo!</div>]

3)text 參數(shù)

通過 text 參數(shù)可以搜搜文檔中的字符串內(nèi)容。與 name 參數(shù)的可選值一樣,text 參數(shù)接受 字符串,正則表達式,列表,True

soup.find_all(text="Elsie") [u'Elsie']soup.find_all(text=["Tillie", "Elsie", "Lacie"]) [u'Elsie', u'Lacie', u'Tillie']soup.find_all(text=re.compile("Dormouse")) [u"The Dormouse's story", u"The Dormouse's story"]

4)limit 參數(shù)

find_all () 方法返回全部的搜索結(jié)構(gòu),如果文檔樹很大那么搜索會很慢。如果我們不需要全部結(jié)果,可以使用 limit 參數(shù)限制返回結(jié)果的數(shù)量。效果與 SQL 中的 limit 關(guān)鍵字類似,當搜索到的結(jié)果數(shù)量達到 limit 的限制時,就停止搜索返回結(jié)果。文檔樹中有 3 個 tag 符合搜索條件,但結(jié)果只返回了 2 個,因為我們限制了返回數(shù)量

soup.find_all("a", limit=2) [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]

5)recursive 參數(shù)

調(diào)用 tag 的 find_all () 方法時,Beautiful Soup 會檢索當前 tag 的所有子孫節(jié)點,如果只想搜索 tag 的直接子節(jié)點,可以使用參數(shù) recursive=False . 一段簡單的文檔:

<html><head><title>The Dormouse's story</title></head> ...

是否使用 recursive 參數(shù)的搜索結(jié)果:

soup.html.find_all("title") [<title>The Dormouse's story</title>]soup.html.find_all("title", recursive=False) []

(2)find( name , attrs , recursive , text , **kwargs )

它與 find_all () 方法唯一的區(qū)別是 find_all () 方法的返回結(jié)果是值包含一個元素的列表,而 find () 方法直接返回結(jié)果

(3)find_parents() find_parent()

find_all () 和 find () 只搜索當前節(jié)點的所有子節(jié)點,孫子節(jié)點等. find_parents () 和 find_parent () 用來搜索當前節(jié)點的父輩節(jié)點,搜索方法與普通 tag 的搜索方法相同,搜索文檔搜索文檔包含的內(nèi)容

(4)find_next_siblings() find_next_sibling()

這 2 個方法通過 .next_siblings 屬性對當 tag 的所有后面解析的兄弟 tag 節(jié)點進行迭代,find_next_siblings () 方法返回所有符合條件的后面的兄弟節(jié)點,find_next_sibling () 只返回符合條件的后面的第一個 tag 節(jié)點

(5)find_previous_siblings() find_previous_sibling()

這 2 個方法通過 .previous_siblings 屬性對當前 tag 的前面解析的兄弟 tag 節(jié)點進行迭代,find_previous_siblings () 方法返回所有符合條件的前面的兄弟節(jié)點,find_previous_sibling () 方法返回第一個符合條件的前面的兄弟節(jié)點

(6)find_all_next() find_next()

這 2 個方法通過 .next_elements 屬性對當前 tag 的之后的 tag 和字符串進行迭代,find_all_next () 方法返回所有符合條件的節(jié)點,find_next () 方法返回第一個符合條件的節(jié)點

(7)find_all_previous () 和 find_previous ()

這 2 個方法通過 .previous_elements 屬性對當前節(jié)點前面的 tag 和字符串進行迭代,find_all_previous () 方法返回所有符合條件的節(jié)點,find_previous () 方法返回第一個符合條件的節(jié)點

注:以上(2)(3)(4)(5)(6)(7)方法參數(shù)用法與 find_all () 完全相同,原理均類似,在此不再贅述。

8.CSS 選擇器

我們在寫 CSS 時,標簽名不加任何修飾,類名前加點,id 名前加 #,在這里我們也可以利用類似的方法來篩選元素,用到的方法是 soup.select(),返回類型是 list

(1)通過標簽名查找

print soup.select('title') [<title>The Dormouse's story</title>] print soup.select('a') [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>] print soup.select('b') [<b>The Dormouse's story</b>]

(2)通過類名查找

print soup.select('.sister') [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

(3)通過 id 名查找

print soup.select('#link1') [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

(4)組合查找

組合查找即和寫 class 文件時,標簽名與類名、id 名進行的組合原理是一樣的,例如查找 p 標簽中,id 等于 link1 的內(nèi)容,二者需要用空格分開

print soup.select('p #link1') [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

直接子標簽查找

print soup.select("head > title") [<title>The Dormouse's story</title>]

(5)屬性查找

查找時還可以加入屬性元素,屬性需要用中括號括起來,注意屬性和標簽屬于同一節(jié)點,所以中間不能加空格,否則會無法匹配到。

print soup.select('a[class="sister"]') [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]print soup.select('a[href="http://example.com/elsie"]') [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

同樣,屬性仍然可以與上述查找方式組合,不在同一節(jié)點的空格隔開,同一節(jié)點的不加空格

print soup.select('p a[href="http://example.com/elsie"]') [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

以上的 select 方法返回的結(jié)果都是列表形式,可以遍歷形式輸出,然后用 get_text () 方法來獲取它的內(nèi)容。

soup = BeautifulSoup(html, 'lxml') print type(soup.select('title')) print soup.select('title')[0].get_text()for title in soup.select('title'):print title.get_text()

好,這就是另一種與 find_all 方法有異曲同工之妙的查找方法,是不是感覺很方便?

總結(jié)

本篇內(nèi)容比較多,把 Beautiful Soup 的方法進行了大部分整理和總結(jié),不過這還不算完全,仍然有 Beautiful Soup 的修改刪除功能,不過這些功能用得比較少,只整理了查找提取的方法,希望對大家有幫助!小伙伴們加油! 熟練掌握了 Beautiful Soup,一定會給你帶來太多方便,加油吧!

總結(jié)

以上是生活随笔為你收集整理的Python 爬虫利器二之 Beautiful Soup 的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

精品一区二区三区在线播放 | 精品高清美女精品国产区 | 免费精品国产va自在自线 | 一二三精品视频 | 国产精品久久久久久69 | 999免费视频 | 亚洲天天在线日亚洲洲精 | 人人揉人人揉人人揉人人揉97 | 丁香综合 | 在线视频 国产 日韩 | 超碰最新网址 | 亚洲人成人在线 | 手机av片| 日本bbbb摸bbbb | 91久久黄色 | av成人免费网站 | 日韩a级免费视频 | 日韩精品久久一区二区三区 | 9ⅰ精品久久久久久久久中文字幕 | 精品国产一区二区三区在线 | 国产一卡二卡在线 | 欧美久久久久久久 | 91福利在线观看 | 99久久久久成人国产免费 | 欧美精品久久久久久久久久久 | 日韩系列 | 亚洲黄色小说网 | 婷婷色网视频在线播放 | 欧美精品乱码久久久久久按摩 | 丁香婷婷综合色啪 | 国产视频91在线 | 成人午夜电影在线观看 | 好看的国产精品视频 | 中文字幕av最新更新 | 久久这里只有精品9 | 国产亚洲成av片在线观看 | 中文字幕在线播放一区二区 | 免费av影视 | 一区二区三区播放 | 国产黄网在线 | 亚洲爱爱视频 | 美女在线免费视频 | 成人黄色国产 | 97视频在线看 | 97超碰人人澡 | 狠狠的干 | 四虎国产视频 | 蜜臀av一区二区 | 99久久精品免费看国产一区二区三区 | 国产成人av网 | 黄色精品网站 | 四虎成人在线 | 国产精品久久久久久五月尺 | 国产 日韩 在线 亚洲 字幕 中文 | 精品久久久久久国产偷窥 | 国产精品美女久久久久久久久 | 欧美视频xxx| 在线观看日韩精品视频 | 精品视频在线播放 | 久章草在线 | 久久久久久不卡 | 久久久影院一区二区三区 | 蜜臀av夜夜澡人人爽人人桃色 | 久久免费在线 | 午夜久久网 | 久草精品视频在线看网站免费 | 久久久久久国产精品免费 | 亚洲精欧美一区二区精品 | 二区三区在线观看 | 久久激情五月丁香伊人 | 亚洲视频在线免费看 | 美女在线免费观看视频 | 99热精品免费观看 | 久久精品看片 | 免费人人干 | 国产精品久久久久久a | 又黄又爽又刺激的视频 | 又黄又爽又刺激视频 | 97视频在线免费观看 | 国产精品日韩久久久久 | 98涩涩国产露脸精品国产网 | 色妞久久福利网 | 国产日本三级 | 精品国产aⅴ一区二区三区 在线直播av | 国产精品久久影院 | 天天色中文 | 国产日本在线观看 | 欧美精品久久久久久久久久 | 国产手机视频 | 久久久国产精品一区二区三区 | 91av在线电影 | 免费观看91 | 中文字幕电影高清在线观看 | 中文字幕免费高清在线 | 日韩欧美精品在线观看视频 | 欧美一级高清片 | 一区二区视频免费在线观看 | 久久久久久久久久久网 | 99热免费在线 | 国产免费不卡 | 97超碰在线视 | 欧美日韩国产高清视频 | 精品xxx | 婷婷色综合 | 国产成人精品一区二区在线 | 亚洲一区二区黄色 | 欧美视频日韩视频 | 久久与婷婷 | 97超碰香蕉| 最近高清中文字幕在线国语5 | 精品999 | 麻豆传媒视频在线 | 亚洲综合成人av | 91手机视频 | 日韩毛片在线播放 | 国产视频一二区 | 91视频xxxx | 在线国产能看的 | 骄小bbw搡bbbb揉bbbb | 99色精品视频 | 99re久久资源最新地址 | 色婷婷啪啪免费在线电影观看 | 午夜一级免费电影 | 欧美一区二区免费在线观看 | 久久免费黄色 | 日韩中文字幕视频在线 | 欧美成人基地 | 丁香五月网久久综合 | 婷婷网站天天婷婷网站 | 超级碰视频| 69人人 | 草久久影院 | 亚洲春色综合另类校园电影 | 久久久免费精品国产一区二区 | 国产福利一区二区在线 | 亚洲黄色小说网 | 精品国产人成亚洲区 | 99免费在线播放99久久免费 | 91在线日韩 | 国产97视频| 干亚洲少妇 | www.夜夜草| 人人精久 | 在线免费看黄网站 | 97小视频 | 日韩中文字幕视频在线观看 | 97日日碰人人模人人澡分享吧 | 欧洲精品久久久久毛片完整版 | 91精品天码美女少妇 | 国产字幕av | 国产中文字幕在线播放 | 国产成人久久精品一区二区三区 | 人人干人人艹 | 97av在线视频 | 999精品视频 | 三日本三级少妇三级99 | 中文字幕亚洲精品日韩 | 国产999精品久久久久久麻豆 | 国产一级片网站 | 久久久久久久久久久免费视频 | 中文字幕字幕中文 | 中文伊人 | 97视频在线免费 | 欧美一区二区三区激情视频 | 中文字幕无吗 | 久 久久影院 | 亚洲国产视频直播 | 六月色 | 中文字幕一区在线观看视频 | 欧美一区二区三区免费看 | 伊人超碰在线 | 天天干,天天草 | 麻豆av一区二区三区在线观看 | 国语麻豆| 亚洲国产欧美在线看片xxoo | 一区二区三区四区五区在线 | 亚洲手机av | 日日干美女 | 在线看岛国av| 天天干天天操天天拍 | 欧美日韩p片 | 日韩久久精品一区二区 | 日韩精品在线视频免费观看 | 91亚洲精品久久久中文字幕 | 天天综合五月天 | 久久不射网站 | 国产精品久久久久久久久久久久久久 | 一区二区三区视频 | 国产短视频在线播放 | 国产精品自拍在线 | 国产热re99久久6国产精品 | 在线亚洲成人 | 在线观看视频三级 | 手机看片久久 | 亚洲成人软件 | 久久久久久久久久亚洲精品 | 久久久久免费 | 亚洲欧美视屏 | 欧美疯狂性受xxxxx另类 | 亚洲伦理精品 | 久热色超碰 | 99在线观看视频网站 | 91精品久久久久久 | 贫乳av女优大全 | 国产三级国产精品国产专区50 | 操操操天天操 | 国产精品毛片 | 成人av网页 | 毛片播放网站 | 九九日韩 | 成人在线免费看 | 99久久精品国产一区 | 日本久久视频 | 久久理论影院 | 狠狠插天天干 | 激情欧美一区二区三区免费看 | 亚洲不卡av一区二区三区 | 黄色在线观看www | 国产一级精品视频 | 91精品免费视频 | 久久五月激情 | 国产一区久久久 | 久久免费视频在线 | 日韩最新在线 | 欧美激情视频一二区 | 久久精品精品电影网 | 成人久久久久久久久久 | 青青草国产精品 | 在线观看国产永久免费视频 | 中文字幕在线观 | 最近中文字幕完整视频高清1 | 国产短视频在线播放 | 成人国产精品久久久久久亚洲 | 中文字幕亚洲在线观看 | 97天堂 | 青青色影院 | 国产一区视频在线观看免费 | 日韩综合一区二区三区 | 中文字幕在线视频第一页 | www.xxx.性狂虐 | 豆豆色资源网xfplay | 探花在线观看 | 在线看国产视频 | 亚洲精品综合一二三区在线观看 | 婷婷色网视频在线播放 | 成人av在线看 | 超碰人在线| 中文字幕在线精品 | 久艹在线免费观看 | 美女福利视频网 | 99久久精品免费一区 | 97视频成人| 日韩精品一区二区三区免费视频观看 | 日韩在线二区 | 久久久久成人免费 | av一级片在线观看 | 香蕉影院在线观看 | 91秒拍国产福利一区 | 国产精品久久久久久久久久久久冷 | 国产精品一码二码三码在线 | 四虎免费av | 91在线中文字幕 | 欧美一级片免费在线观看 | 亚洲综合黄色 | 丁香婷婷色综合亚洲电影 | 欧美日韩首页 | 久久avav | 久久国产乱 | 亚洲国产资源 | 国产原创在线 | 成年人在线免费看视频 | 91成人免费看片 | 亚洲综合欧美日韩狠狠色 | 久久天堂亚洲 | 国产精品 日韩 欧美 | 亚洲午夜av久久乱码 | 在线观看视频黄 | 日韩电影一区二区三区在线观看 | 又黄又爽的免费高潮视频 | 在线观看黄色小视频 | 日韩r级在线| 天天拍天天爽 | 字幕网av | 国产在线观看中文字幕 | 中文字幕在线看视频 | 日韩黄色一区 | 在线观看www视频 | www.av中文字幕.com | 97网| www国产一区| 亚洲精品www久久久久久 | 亚洲精品乱码久久久久久 | 久久精品国产美女 | 久久久久久视频 | 伊人伊成久久人综合网小说 | 99久久精品免费看国产麻豆 | 欧美精品久久久久性色 | 国产精品岛国久久久久久久久红粉 | 亚洲a网 | 久久99视频免费 | 激情婷婷综合网 | 在线观看韩日电影免费 | 久草在线费播放视频 | 久久精精品| 精品久久一二三区 | 亚洲成av人片在线观看 | 久久久亚洲电影 | 97超碰成人在线 | 午夜久久久久久久久久久 | 91精品国产91热久久久做人人 | 午夜男人影院 | 日韩精品一区二区久久 | 99久久久国产精品免费99 | 曰本三级在线 | 日本中文字幕在线免费观看 | 91探花视频 | 日日躁夜夜躁xxxxaaaa | 精品久久久久久综合日本 | 日韩精品免费一区二区三区 | 色橹橹欧美在线观看视频高清 | 五月天中文字幕mv在线 | 91中文字幕在线观看 | 欧美久久久一区二区三区 | 国产成人精品国内自产拍免费看 | 国产在线精品一区 | 国产在线视频一区二区三区 | 成x99人av在线www | 久久激情影院 | 这里有精品在线视频 | 中文字幕三区 | 少妇bbb搡bbbb搡bbbb′ | 手机看片国产日韩 | 人人射 | 在线观影网站 | 国产成人av电影在线观看 | 久久99影院| 亚洲激情一区二区三区 | 国产亚洲精品久久久久久久久久 | 日批在线看 | 成人精品国产免费网站 | 99久久久成人国产精品 | 一区二区高清在线 | 91视频a | 一级黄色网址 | 久久久亚洲影院 | 国产最新网站 | www久久com| 激情网五月天 | 国产91精品一区二区麻豆亚洲 | 国产五月 | 91网址在线 | 欧美精品免费在线 | 久国产在线播放 | 国产区精品视频 | 精品一区 在线 | www夜夜操| 日本久久成人 | 日批视频在线观看免费 | 欧美久久久影院 | 久久国产精品免费观看 | 久久99久久久久久 | 特级毛片爽www免费版 | 久久精品aaa | 欧美日韩超碰 | 国产亚洲精品成人av久久影院 | 国产精品一区二区果冻传媒 | 成人动态视频 | 国产精品九九视频 | 在线欧美最极品的av | 国产精品电影一区二区 | 国内精品久久久久久久久久清纯 | 美女视频网站久久 | 日韩免费在线观看 | 亚洲网久久 | 亚洲综合少妇 | 久久综合九色综合久99 | 夜夜夜草 | 久久婷婷一区二区三区 | 国产免费激情久久 | 深爱激情综合 | 香蕉视频在线免费 | 国产黄在线看 | 99在线视频精品 | 国产精品视频久久久 | 日韩三级av | 在线观看日韩 | 久久久99精品免费观看 | 国产专区一 | 毛片99| 国产日产精品一区二区三区四区的观看方式 | 日韩电影一区二区三区 | 久久久久久久免费观看 | 成人午夜电影网站 | 日韩在线观看视频一区二区三区 | 99热在线这里只有精品 | 免费观看成年人视频 | 日韩二区在线播放 | 99久久精品久久久久久动态片 | www.天天操.com| 精品视频久久 | 97热在线观看 | 成人一级电影在线观看 | 九九九九精品九九九九 | 久久精品99国产 | 国产精品久久久久永久免费看 | 九九电影在线 | 久久久亚洲影院 | 国产一区二区三精品久久久无广告 | 网站在线观看你们懂的 | 高清av中文在线字幕观看1 | 在线观看网站av | 美女网站久久 | 午夜色婷婷 | 欧美成人黄色 | 久久免费看毛片 | 丰满少妇麻豆av | 婷婷在线免费观看 | 四虎影视精品永久在线观看 | 日韩免费电影网站 | 在线免费观看成人 | 粉嫩高清一区二区三区 | 91麻豆精品国产91久久久久久 | 国产日韩精品欧美 | 免费观看一级成人毛片 | 亚洲在线视频网站 | 啪一啪在线 | 亚洲视频精品在线 | 久久九九久久精品 | 六月丁香色婷婷 | 久久综合99 | 免费日p视频 | 久草新在线 | 国产区免费 | 久久一区二区三区国产精品 | 激情婷婷丁香 | 国产又粗又猛又爽又黄的视频免费 | 射射射av| 欧美色图狠狠干 | 日韩欧美一区二区在线观看 | 天天躁日日躁狠狠躁av中文 | 亚洲五月激情 | 337p西西人体大胆瓣开下部 | 婷婷深爱五月 | 久久免费资源 | 久久久在线观看 | 久久免费在线观看视频 | 大胆欧美gogo免费视频一二区 | 麻豆影视网站 | 久久在线免费观看 | 久久精品99久久久久久 | 一区二区三区精品在线视频 | 黄色三级在线看 | 日韩久久片 | 日韩一区二区久久 | 色综合久久66 | 国产无遮挡又黄又爽馒头漫画 | 超级碰碰视频 | 婷婷激情站 | 97超碰香蕉 | 国产一级在线观看 | 久久婷婷精品视频 | 国产精品激情偷乱一区二区∴ | 亚洲婷婷丁香 | a级国产乱理论片在线观看 伊人宗合网 | av资源免费在线观看 | 在线v片免费观看视频 | 夜夜嗨av色一区二区不卡 | 免费日韩 精品中文字幕视频在线 | 日黄网站 | 99久热在线精品视频观看 | 天天天天天天天天操 | 99免费在线视频观看 | 四虎永久视频 | 六月丁香婷婷在线 | 亚洲精品网址在线观看 | 天天干夜夜 | 欧美另类交人妖 | 成人av电影在线播放 | 毛片网在线 | 在线视频日韩欧美 | 日韩在线观看网站 | 成人黄色毛片 | 一区二区三区免费在线观看视频 | 91麻豆精品91久久久久同性 | 91香蕉嫩草| 国产黄色片一级三级 | 欧洲精品视频一区二区 | 亚洲精品在线资源 | 五月天婷亚洲天综合网鲁鲁鲁 | 特及黄色片 | 国产无遮挡又黄又爽在线观看 | 久青草视频 | 亚洲美女视频在线观看 | 欧美精品一区二区在线播放 | 亚洲伊人av | 久久综合色影院 | 豆豆色资源网xfplay | 岛国av在线不卡 | 国产亚洲精品久久19p | 人人干狠狠干 | 成人一级视频在线观看 | 五月亚洲综合 | 国产成人高清在线 | 日韩二区三区在线 | 亚洲片在线观看 | 欧美精品中文在线免费观看 | 久久综合久久综合这里只有精品 | 四虎永久免费在线观看 | 国产精品一区二区免费 | 精品国产福利在线 | 日韩精品视频免费专区在线播放 | 婷婷激情五月综合 | 激情视频国产 | 日韩一区二区三免费高清在线观看 | 视频一区视频二区在线观看 | 免费在线观看av片 | 玖玖爱在线观看 | 久久综合9988久久爱 | 欧美日韩精品影院 | 91视频在线| 国产精彩在线视频 | 在线激情电影 | 五月婷网 | 免费a一级 | 日韩精品久久久久久中文字幕8 | www.日韩免费 | 91九色视频 | 久久福利在线 | 最近中文字幕在线中文高清版 | 国产精品激情偷乱一区二区∴ | 91久久精品一区二区三区 | 久久久激情网 | 久久精品波多野结衣 | 国产精品美女久久久久久久 | 国产中文字幕精品 | 成年人看片 | 狠狠干美女 | 国产精品观看在线亚洲人成网 | 欧美巨大 | 精品一区二区三区在线播放 | 91精品综合在线观看 | 国产网站在线免费观看 | 亚洲精品午夜久久久久久久 | 日韩成人看片 | 精品亚洲视频在线 | 国产资源在线播放 | 国产精彩视频一区 | 欧美国产大片 | 欧美日韩一区二区三区在线观看视频 | 在线亚洲激情 | 成人久久视频 | 国产亚洲精品久久久久久无几年桃 | 一级a性色生活片久久毛片波多野 | 国产女人免费看a级丨片 | 国产精品高| 久久国产美女视频 | 99精品视频在线观看视频 | 欧美日韩在线网站 | 午夜精品久久久久久久99热影院 | 色多多污污| 亚洲第一久久久 | 在线观看久草 | 久久久久免费观看 | 色偷偷97| 成人电影毛片 | 婷婷5月激情5月 | 久久久91精品国产 | 日韩精品久久久久久久电影99爱 | 欧美日韩一区二区视频在线观看 | 看黄色91| 精品国产一区二区三区四区在线观看 | 欧美a√在线 | 亚洲视频在线观看网站 | 天天操天天操天天爽 | 欧美网址在线观看 | 伊人久久电影网 | 天天综合天天做天天综合 | 在线观看亚洲专区 | 国产 色 | www四虎影院 | 国产 一区二区三区 在线 | 亚洲精品国产精品国自产观看浪潮 | 五月天婷婷在线观看视频 | 亚洲高清精品在线 | 午夜aaaa| 一级黄色片在线免费看 | 麻豆视频国产精品 | 国产视频精品久久 | 欧美日韩99| 国产a级精品| 久久中文字幕视频 | 在线观看成人国产 | 开心激情五月网 | 亚洲精品国产麻豆 | 一级成人在线 | 亚洲永久精品在线观看 | 久久视频这里有久久精品视频11 | 伊人网站| 亚洲一级黄色 | 国产真实精品久久二三区 | 亚洲国产99| 免费精品人在线二线三线 | 久久99网 | 欧美伦理电影一区二区 | 91亚洲精品久久久蜜桃 | 婷婷色伊人 | 亚欧日韩av | 亚洲欧美少妇 | 国产精品一区二区三区视频免费 | 欧美日韩一区二区三区不卡 | 最近最新中文字幕 | 久久国产网 | 久久专区 | 在线视频精品播放 | www.天天射.com | www.97色.com| 国产三级在线播放 | 2021国产在线 | 久久精品aaa | 亚洲黄色软件 | 久久精品欧美一 | 四虎在线免费视频 | 麻豆视频在线看 | 美女在线免费视频 | 国产精品一区二区美女视频免费看 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产精品一区二区av日韩在线 | 亚洲精品播放 | 国产黄免费在线观看 | 日韩欧美黄色网址 | 五月天伊人 | 在线观看深夜视频 | 久久一区二 | 99热精品国产一区二区在线观看 | 99精品国产兔费观看久久99 | 十八岁以下禁止观看的1000个网站 | 亚洲一区视频免费观看 | 碰超在线97人人 | 超碰国产在线播放 | 亚洲精品乱码白浆高清久久久久久 | 欧美日韩精品影院 | 这里有精品在线视频 | av成人亚洲 | 免费观看91视频大全 | 五月天婷亚洲天综合网精品偷 | 久久手机精品视频 | 在线观看国产麻豆 | 亚洲人成在线观看 | 色综合天天综合 | 人人爽影院 | 日韩在线观看av | 涩av在线| 在线色吧 | av三级av | www夜夜操 | 国产精品成人品 | 欧美成人精品三级在线观看播放 | 亚洲午夜电影网 | 四虎精品成人免费网站 | 免费高清在线观看成人 | 欧美性生活免费 | 欧美xxxx性xxxxx高清 | 日韩精品一区二区三区中文字幕 | 美女网站在线播放 | www黄色软件 | 人人艹视频 | 日日干av| 热久久免费视频 | 中文字幕韩在线第一页 | 韩国一区在线 | 国产精品久久片 | 五月激情六月丁香 | 狠狠色丁香婷婷综合欧美 | 99精品热视频只有精品10 | 免费看的黄色的网站 | 香蕉成人在线视频 | 91色蜜桃 | 婷婷深爱激情 | 亚洲国产精品电影在线观看 | 亚洲永久免费av | 日韩精品一区二区三区高清免费 | 欧美色久 | 国产精品毛片久久 | 国产特级毛片aaaaaa毛片 | 精品国产伦一区二区三区免费 | 中文字幕在线视频一区二区 | 干亚洲少妇 | 黄污网站在线 | 黄色网大全 | 成人cosplay福利网站 | 日操干 | 国内综合精品午夜久久资源 | 五月婷婷丁香激情 | 国产精品一区二区精品视频免费看 | 国产97视频在线 | 成人亚洲欧美 | 综合伊人久久 | 在线影院中文字幕 | 91爱爱中文字幕 | 欧美亚洲国产一卡 | 97国产人人 | 国产精品不卡视频 | 综合婷婷丁香 | 992tv又爽又黄的免费视频 | 五月开心激情 | 精品视频免费久久久看 | 中文字幕日韩一区二区三区不卡 | 91九色在线观看视频 | 伊人伊成久久人综合网站 | 色婷在线 | 99精品视频在线观看 | 日韩久久久久久久久久久久 | 欧美日韩在线视频观看 | 久久公开视频 | 91av视频免费在线观看 | 日韩精品视频一二三 | 久久久精品网站 | 99热在线国产 | 国产免费黄视频在线观看 | 一区二区三区免费在线 | 免费在线观看国产精品 | 亚洲欧美日韩一区二区三区在线观看 | 探花视频在线观看免费版 | 精品久久一区 | 中文字幕乱码日本亚洲一区二区 | 亚洲h色精品 | 成人在线免费观看网站 | wwwwww色 | 欧美电影在线观看 | 国产亚洲综合在线 | 一区二区三区在线免费 | av一区二区在线观看中文字幕 | 五月天婷婷在线观看视频 | 久草久草久草久草 | 天天干天天干天天操 | 中文视频一区二区 | 日韩在线观看网站 | 日韩欧美黄色网址 | 综合五月| 伊人国产在线播放 | 日韩视频中文字幕在线观看 | 超碰在线94 | 成年人在线免费视频观看 | 亚洲成av| 91av亚洲| 国内精品久久久久影院男同志 | 国产精品久久久av | 中文字幕一区二区三区在线观看 | 国产999精品久久久影片官网 | 中文字幕一区在线观看视频 | 欧美精彩视频在线观看 | 婷婷去俺也去六月色 | 最新av电影网址 | 天天爽天天做 | 不卡av免费在线观看 | 人人爽人人澡人人添人人人人 | 色资源网免费观看视频 | 国产91粉嫩白浆在线观看 | 91成熟丰满女人少妇 | 六月丁香激情综合 | av不卡中文 | 在线国产一区二区 | 国产视频2区 | 91av手机在线观看 | 91热精品 | 超碰97在线资源站 | 午夜av在线 | 日韩欧美视频 | 韩国一区二区在线观看 | 狠狠狠色丁香婷婷综合久久88 | 日韩欧美高清一区二区 | 欧美日韩一区二区在线观看 | 日韩乱色精品一区二区 | 999久久国产精品免费观看网站 | 免费精品在线视频 | 久久久久免费观看 | 日韩女同一区二区三区在线观看 | www.狠狠干| 日本久久久久久久久久久 | 国产黄色精品网站 | 一区二区伦理 | 日韩黄色网络 | 欧美国产精品久久久久久免费 | 91av大全 | 成人毛片在线观看 | 69人人| 夜夜操狠狠操 | 久章草在线观看 | 日日夜夜噜 | 久久精品久久精品久久 | 深夜成人av | 91免费观看视频网站 | www.com黄 | 在线电影 一区 | 波多野结衣精品 | 毛片网免费 | 久久99国产精品自在自在app | 亚洲欧洲中文日韩久久av乱码 | 五月婷婷导航 | 亚洲一本视频 | mm1313亚洲精品国产 | 国产精品一区二区久久精品爱微奶 | 久草在在线视频 | 欧美日韩中字 | 亚洲乱码国产乱码精品天美传媒 | 视频国产一区二区三区 | 久久avav| 奇米7777狠狠狠琪琪视频 | 91精彩视频在线观看 | 97成人精品视频在线播放 | 久久久久久久久久伊人 | 99久久夜色精品国产亚洲 | 色婷婷激情五月 | 亚洲日韩精品欧美一区二区 | 手机在线小视频 | 一区二区三区免费看 | 成人午夜在线观看 | 国产综合福利在线 | 欧美日韩xxxxx | 亚州日韩中文字幕 | av女优中文字幕在线观看 | 日本夜夜草视频网站 | 国产色女 | 天天爽夜夜操 | 五月天色丁香 | 天天干 夜夜操 | 国产成人精品三级 | 在线影院中文字幕 | 91在线观看欧美日韩 | 少妇按摩av | a级免费观看 | 2021国产精品 | 免费久久99精品国产婷婷六月 | 99久久久久成人国产免费 | 国产精品久久久久影院 | 精品高清美女精品国产区 | 综合久久精品 | 免费看三片 | 狠狠色丁香久久婷婷综合_中 | 国产一区欧美二区 | 国产69精品久久久久99尤 | 狠狠狠狠狠狠天天爱 | 69av视频在线观看 | 日日成人网 | 亚洲精选国产 | www.国产精品 | 国产五十路毛片 | 手机在线观看国产精品 | 国产精品夜夜夜一区二区三区尤 | 久久久久女人精品毛片九一 | 国产精品自产拍 | 69国产精品视频 | 超碰九九| 九九视频免费观看视频精品 | 日日夜夜免费精品视频 | 狠狠色婷婷丁香六月 | 五月婷婷一区二区三区 | 久久久久久久久久久国产精品 | 黄色特级毛片 | 日韩精品在线免费观看 | 亚洲国产精品小视频 | 99精品国产99久久久久久97 | 日韩黄色一区 | 久草a在线 | 亚洲成人黄 | 成人小视频在线免费观看 | a级片久久久 | 日韩av一区二区在线影视 | 亚洲精品国产精品99久久 | 国产精品乱码久久 | 婷婷六月网| 天天天天天天操 | 精品在线观看一区二区 | 中文资源在线官网 | 五月宗合网 | 久久在线免费观看视频 | 中文在线中文资源 | free,性欧美 九九交易行官网 | 在线色视频小说 | 亚洲激情小视频 | 亚洲成人午夜av | 97手机电影网 | 国产日韩中文字幕 | 精品国产乱码久久久久 | 美女视频黄的免费的 | 男女视频久久久 | 久久免费在线观看视频 | 中文字幕在线观看资源 | 黄污在线观看 | 91精品爽啪蜜夜国产在线播放 | 免费亚洲一区二区 | 有码中文字幕在线观看 | 天天综合导航 | 五月综合网站 | 久久久久久免费 | 久久久久久久久久久久av | www.eeuss影院av撸| 免费的国产精品 | 日本精品视频一区 | 色综合亚洲精品激情狠狠 | 国产婷婷vvvv激情久 | 久久精品视频3 | 国产精品福利无圣光在线一区 | 亚洲不卡av一区二区三区 | 国产一区二区三区黄 | 超碰在线成人 | 国产亚洲精品日韩在线tv黄 | 欧美热久久| 久久无码精品一区二区三区 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产一级一片免费播放放 | 国产一级黄色片免费看 | 亚洲1级片| 久久国产热视频 | 五月的婷婷 | 精品国自产在线观看 | 国产婷婷视频在线 | 中文字幕在线免费观看视频 | 国产区高清在线 | 久草在线综合 | 国产手机视频 | 国产精品观看在线亚洲人成网 | 91视频午夜| 亚洲精品男人天堂 | 美女视频黄频大全免费 | 国产高清在线免费观看 | av中文字幕av | 久久精品99国产精品 | www.av中文字幕.com| 日韩高清无线码2023 | 久久这里只有精品视频首页 | 日韩在线小视频 | 日韩av电影一区 | 欧美日韩高清在线一区 | 一级免费观看 | 91中文字幕在线观看 | 国产午夜免费视频 | 日韩欧美视频在线观看免费 | 国产精品99久久久久的智能播放 | 最新日韩精品 | 日韩在线电影一区二区 | 91大神精品视频在线观看 | 日批视频在线播放 | 婷婷在线免费观看 | 日本丶国产丶欧美色综合 | 久久久久久高潮国产精品视 | 丁香综合网 | 亚洲经典中文字幕 | 在线观看国产v片 | 中文字幕国产视频 | 在线免费观看黄色小说 | 日韩一区二区在线免费观看 | 91丨九色丨高潮 | 久久久黄色免费网站 | 国产精品美女久久久网av | 欧美精品在线视频 | 青春草视频在线播放 | 久草视频免费在线观看 | 最近中文字幕高清字幕免费mv | 国产精品一区久久久久 | 婷婷在线网站 | 久久免费电影网 | 欧美激精品 | 91av在线免费视频 | 区一区二区三在线观看 | 特级毛片在线观看 | 国产黄网站在线观看 | 午夜av网站 | 午夜久久福利 | 婷婷综合久久 | 日韩大片在线看 | 精品国产自在精品国产精野外直播 | 91精品久久久久久综合乱菊 | 青青河边草手机免费 | 日日日干 | 亚洲一区二区精品视频 | 狠狠色丁香九九婷婷综合五月 | 国产精品免费av | 久久成人国产精品一区二区 | 成年人黄色免费网站 | 日韩高清一区 | 玖操 | 亚洲 欧美 另类人妖 | 国产小视频精品 | 午夜色大片在线观看 | 国产视频九色蝌蚪 | 在线国产一区二区 | 欧美亚洲一级片 | 亚洲伊人成综合网 | 国产精品嫩草影院123 | 999久久国产精品免费观看网站 | 久久国产精品99久久人人澡 | www.黄色网.com| 国产99自拍 | 中文字幕精品三区 | 在线精品亚洲一区二区 | 国产做a爱一级久久 | 九九热有精品 |