欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

  • 標簽里,展開這個li標簽,我們可找到商品名稱,價格,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é)點屬性進行查找,如,soup.find('div', id='節(jié)點id')或soup.find('li', class_='某個類名')或soup.find('標簽名', 屬性=屬性值),當找到一個節(jié)點后,還可以使用這個節(jié)點繼續(xù)在其子節(jié)點中查找。
soup.find_all()是查找多個,同樣屬性的節(jié)點,返回一個列表。
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()

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

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

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

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

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

相關文章

  • 學習python的前途 python掙錢

    學習python的前途 python掙錢

    在本文里我們給大家整理了關于學習python的前途以及python掙錢的方法整理,有興趣的朋友們閱讀下。
    2019-02-02
  • python字符串切片及常用方法示例詳解

    python字符串切片及常用方法示例詳解

    這篇文章主要介紹了python字符串切片及常用方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 詳細解讀tornado協(xié)程(coroutine)原理

    詳細解讀tornado協(xié)程(coroutine)原理

    這篇文章主要介紹了詳細解讀tornado協(xié)程(coroutine)原理,涉及協(xié)程定義,生成器和yield語義,F(xiàn)uture對象,ioloop對象,函數(shù)裝飾器coroutine等相關內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python Reduce函數(shù)的高級用法詳解

    Python Reduce函數(shù)的高級用法詳解

    這篇文章主要介紹了reduce函數(shù)的工作原理和應用,同時提供豐富的示例代碼,方便更好地理解如何使用reduce函數(shù)來輕松解決復雜的數(shù)據(jù)聚合問題,需要的可以參考下
    2023-11-11
  • PyTorch中torch.tensor與torch.Tensor的區(qū)別詳解

    PyTorch中torch.tensor與torch.Tensor的區(qū)別詳解

    這篇文章主要介紹了PyTorch中torch.tensor與torch.Tensor的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • python實現(xiàn)桌面壁紙切換功能

    python實現(xiàn)桌面壁紙切換功能

    這篇文章主要為大家詳細介紹了python requests+pywin32實現(xiàn)桌面壁紙切換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • pandas實戰(zhàn):分析三國志人物示例實現(xiàn)

    pandas實戰(zhàn):分析三國志人物示例實現(xiàn)

    這篇文章主要介紹了pandas實戰(zhàn):分析三國志人物示例實現(xiàn),本文章內(nèi)容詳細,具有很好的參考價值,希望對大家有所幫助,需要的朋友可以參考下
    2023-01-01
  • python常用request庫與lxml庫操作方法整理總結(jié)

    python常用request庫與lxml庫操作方法整理總結(jié)

    一路學習,一路總結(jié),技術就是這樣,應用之后,在進行整理,才可以加深印象。本篇文字為小節(jié)篇,核心總結(jié) requests 庫與 lxml 庫常用的操作
    2021-08-08
  • 使用python數(shù)據(jù)清洗代碼實例

    使用python數(shù)據(jù)清洗代碼實例

    這篇文章主要介紹了使用python數(shù)據(jù)清洗代碼實例,分享一下近期用python做數(shù)據(jù)清洗匯總的相關代碼,這里我們用到的python包有pandas、numpy、os等,需要的朋友可以參考下
    2023-07-07
  • Jupyter Notebook運行Python代碼實現(xiàn)傳參方式

    Jupyter Notebook運行Python代碼實現(xiàn)傳參方式

    這篇文章主要介紹了Jupyter Notebook運行Python代碼實現(xiàn)傳參方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論