最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Selenium結(jié)合BeautifulSoup4編寫簡單的python爬蟲

 更新時間:2020年11月06日 16:09:13   作者:韓志超  
這篇文章主要介紹了Selenium結(jié)合BeautifulSoup4編寫簡單的python爬蟲,幫助大家更好的理解和學(xué)習(xí)python 爬蟲的相關(guān)知識,感興趣的朋友可以了解下

在學(xué)會了抓包,接口請求(如requests庫)和Selenium的一些操作方法后,基本上就可以編寫爬蟲,爬取絕大多數(shù)網(wǎng)站的內(nèi)容。

在爬蟲領(lǐng)域,Selenium永遠(yuǎn)是最后一道防線。從本質(zhì)上來說,訪問網(wǎng)頁實際上就是一個接口請求。請求url后,返回的是網(wǎng)頁的源代碼。

我們只需要解析html或者通過正則匹配提取出我們需要的數(shù)據(jù)即可。

有些網(wǎng)站我們可以使用requests.get(url),得到的響應(yīng)文本中獲取到所有的數(shù)據(jù)。而有些網(wǎng)頁數(shù)據(jù)是通過JS動態(tài)加載到頁面中的。使用requests獲取不到或者只能獲取到一部分?jǐn)?shù)據(jù)。
此時我們就可以使用selenium打開頁面來,使用driver.page_source來獲取JS執(zhí)行完后的完整源代碼。

例如,我們要爬取,diro官網(wǎng)女包的名稱,價格,url,圖片等數(shù)據(jù),可以使用requests先獲取到網(wǎng)頁源代碼:
訪問網(wǎng)頁,打開開發(fā)者工具,我們可以看到所有的商品都在一個

  • 標(biāo)簽里,展開這個li標(biāo)簽,我們可找到商品名稱,價格,url,圖片鏈接等信息

從html格式的源碼中提取數(shù)據(jù),有多種選擇,可以使用xml.etree等等方式,bs4是一個比較方便易用的html解析庫,配合lxml解析速度比較快。

bs4的使用方法為

from bs4 import BeautifulSoup

soup = BeautifulSoup(網(wǎng)頁源代碼字符串,'lxml')

soup.find(...).find(...)
soup.findall()
soup.select('css selector語法')

soup.find()可以通過節(jié)點(diǎn)屬性進(jìn)行查找,如,soup.find('div', id='節(jié)點(diǎn)id')或soup.find('li', class_='某個類名')或soup.find('標(biāo)簽名', 屬性=屬性值),當(dāng)找到一個節(jié)點(diǎn)后,還可以使用這個節(jié)點(diǎn)繼續(xù)在其子節(jié)點(diǎn)中查找。
soup.find_all()是查找多個,同樣屬性的節(jié)點(diǎn),返回一個列表。
soup.select()是使用css selector語法查找,返回一個列表。

以下為示例代碼:

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Chrome()
driver.get('https://www.dior.cn/zh_cn/女士精品/皮具系列/所有手提包')
soup = BeautifulSoup(driver.page_source, 'lxml')

products = soup.select('li.is-product')
for product in products:
 name = product.find('span', class_='product-title').text.strip()
 price = product.find('span', class_='price-line').text.replace('¥', '').replace(',','')
 url = 'https://www.dior.cn' + product.find('a', class_='product-link').attrs['href']
 img = product.find('img').attrs['src']
 sku = img.split('/')[-1]
 print(name, sku, price)

driver.quit()

運(yùn)行結(jié)果,如下圖:

注:本例中,也可以使用requests.get()獲取網(wǎng)頁源代碼,格式和使用selenium加載的稍有不同。

一般簡單爬蟲編寫的步驟為:

  • 進(jìn)入列表頁,打開開發(fā)者工具,刷新頁面及向下滾動,查看新產(chǎn)品加載,是否能抓到XHR數(shù)據(jù)接口(直接返回JSON格式所有產(chǎn)品數(shù)據(jù)的接口)
  • 如果有這種接口,嘗試修改參數(shù)中的分頁值,和請求總數(shù)值,看看是否能從一個接口返回所有的商品數(shù)據(jù)
  • 如果只有Doc類型的接口返回頁面,嘗試使用requests.get()請求頁面,分析響應(yīng)文本,是否包含所有商品數(shù)據(jù)
  • 如果requests獲取不到商品數(shù)據(jù)或數(shù)據(jù)不全可以使用selenium加載頁面,然后使用bs4解析提取,如果有多個頁面,循環(huán)逐個操作即可。

以上就是Selenium結(jié)合BeautifulSoup4編寫簡單的python爬蟲的詳細(xì)內(nèi)容,更多關(guān)于python 爬蟲的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python光學(xué)仿真wxpython透鏡演示系統(tǒng)框架

    Python光學(xué)仿真wxpython透鏡演示系統(tǒng)框架

    這篇文章主要為大家介紹了Python光學(xué)仿真UI界面的wxpython透鏡演示系統(tǒng)框架基本講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python全面解讀高級特性切片

    Python全面解讀高級特性切片

    這篇文章主要介紹了Python全面解讀高級特性切片,切片(slice)就是一種截取索引片段的技術(shù),借助切片技術(shù),我們可以十分靈活地處理序列類型的對象,下面我們一起進(jìn)入文章了解更詳細(xì)內(nèi)容吧
    2021-12-12
  • Python自定義指標(biāo)聚類實例代碼

    Python自定義指標(biāo)聚類實例代碼

    K-means算法是最為經(jīng)典的基于劃分的聚類方法,是十大經(jīng)典數(shù)據(jù)挖掘算法之一,下面這篇文章主要給大家介紹了關(guān)于Python自定義指標(biāo)聚類的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • python實現(xiàn)將list拼接為一個字符串

    python實現(xiàn)將list拼接為一個字符串

    這篇文章主要介紹了python實現(xiàn)將list拼接為一個字符串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 一文帶你吃透Python中的日期時間模塊

    一文帶你吃透Python中的日期時間模塊

    Python?提供了?日期和時間模塊用來處理日期和時間,還可以用于格式化日期和時間等常見功能。這篇文章就來帶大家了解一下它的使用,需要的可以參考一下
    2023-02-02
  • 使用python創(chuàng)建生成動態(tài)鏈接庫dll的方法

    使用python創(chuàng)建生成動態(tài)鏈接庫dll的方法

    這篇文章主要介紹了使用python創(chuàng)建生成動態(tài)鏈接庫dll的方法,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python處理日期和時間的方法總結(jié)

    Python處理日期和時間的方法總結(jié)

    這篇文章主要介紹了Python時間和日期的處理方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • pytest解讀一次請求多個fixtures及多次請求

    pytest解讀一次請求多個fixtures及多次請求

    這篇文章主要為大家介紹了一次請求多個fixtures,以及fixtures被多次請求的pytest官方解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • pandas中字典和dataFrame的相互轉(zhuǎn)換

    pandas中字典和dataFrame的相互轉(zhuǎn)換

    有時候需要把dic轉(zhuǎn)換為DataFrame格式,便于查看和存儲,下面這篇文章主要給大家介紹了關(guān)于pandas中字典和dataFrame相互轉(zhuǎn)換的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • pycharm中安裝git遇到的問題及解決

    pycharm中安裝git遇到的問題及解決

    在PyCharm中安裝Git時遇到問題,按照視頻步驟操作后發(fā)現(xiàn)沒有g(shù)it選項,重新檢查設(shè)置,發(fā)現(xiàn)git目錄配置錯誤,重新選擇正確的目錄后,通過Test確認(rèn)無誤,在使用commit提交時遇到錯誤,按刷新按鈕即可解決
    2024-11-11

最新評論

喜德县| 北川| 嘉荫县| 鞍山市| 奉化市| 博罗县| 绥江县| 文化| 黄山市| 雅安市| 盐源县| 嘉黎县| 定日县| 渭源县| 航空| 麦盖提县| 古交市| 崇文区| 滦南县| 镇坪县| 通城县| 郸城县| 孝义市| 崇信县| 德昌县| 五河县| 隆化县| 噶尔县| 广昌县| 齐齐哈尔市| 汨罗市| 石楼县| 淮阳县| 昌平区| 成武县| 阿拉尔市| 潞西市| 洪泽县| 威信县| 怀安县| 金乡县|