當(dāng)前位置:首頁 > IT技術(shù) > 其他 > 正文

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑
2022-04-29 13:54:48


爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_數(shù)據(jù)挖掘


Hello,大家好我叫是Dream呀,一個有趣的Python博主,小白一枚,多多關(guān)照 ?

入門須知:這片樂園從不缺乏天才,努力才是你的最終入場券!

最后,愿我們都能在看不到的地方閃閃發(fā)光,一起加油進(jìn)步

“一萬次悲傷,依然會有Dream,我一直在最溫暖的地方等你”,唱的就是我!哈哈哈~



??前言:??越來越發(fā)現(xiàn)學(xué)爬蟲就像找女朋友一樣,慢慢來,找到合適的機會才能拿下!讓我們來先把爬蟲拿下吧!



爬蟲BeautifulSoup模塊從入門到入坑

一、拿下她的必要準(zhǔn)備

1.構(gòu)建頁面:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<ul>
<li id="l1">張三</li>
<li id="l2">李四</li>
<li>王五</li>
<a href="" id=""class="a1">尚硅谷</a>
<span>嘿嘿嘿</span>
</ul>
</div>

<a href="" title="a2">百度</a>
<div id="d1">
哈哈哈很牛哇
</div>
<p id="p1" class="p1">哈哈哈哈嘿嘿嘿</p>
</body>
</html>

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_python_02

2.知識儲備:

# -*-coding:utf-8 -*-
# @Author:到點了,心疼徐哥哥
# 奧利給干?。。?/span>
from bs4 import BeautifulSoup

# 通過解析本地文件 來將bs4基礎(chǔ)語法進(jìn)行講解
# 默認(rèn)打開的文件的編碼格式為gbk 打開文件時需要指定編碼
soup = BeautifulSoup(open('bs4基本使用.html',encoding='utf-8'),'lxml')
# print(soup)
# 根據(jù)標(biāo)簽名查找節(jié)點
# 找到的是第一個符合條件的數(shù)據(jù)
# print(soup.a)
# 獲取標(biāo)簽的屬性和屬性值
# print(soup.a.attrs)

# bs4的一些函數(shù)
# (1)find
# 返回的是第一個符合條件的數(shù)據(jù)
# print(soup.find('a'))
# 根據(jù)title的值來找到對應(yīng)的
# print(soup.find('a',title="a2")) # <a href="" title="a2">百度</a>
# print(soup.find('a',class="a1")) # class是關(guān)鍵字,不能用。相當(dāng)于古代皇帝叫這個名字,你不能用
# 根據(jù)class的值來找到對應(yīng)的標(biāo)簽對象,注意的是class需要添加下劃線
# print(soup.find('a',class_="a1")) # <a class="a1" href="" id="">尚硅谷</a>

# (2)find_all # 返回的是一個列表,并且返回所有的a標(biāo)簽
# print(soup.find_all('a'))# [<a class="a1" href="" id="">尚硅谷</a>, <a href="" title="a2">百度</a>]
# 如果想要獲取的是多個標(biāo)簽的數(shù)據(jù),那么需要在find_all的參數(shù)中添加的是列表的數(shù)據(jù)。
# print(soup.find_all(['a','span'])) # [<a class="a1" href="" id="">尚硅谷</a>, <span>嘿嘿嘿</span>, <a href="" title="a2">百度</a>]
# limit查找前幾個數(shù)據(jù)
# print(soup.find_all('li',limit=2)) # [<li>張三</li>, <li>李四</li>]

# (3)select(推薦)
# select方法返回列表和多個數(shù)據(jù)
# print(soup.select('a')) # [<a class="a1" href="" id="">尚硅谷</a>, <a href="" title="a2">百度</a>]
# 可以通過.代表class 我們把這種操作叫做類選擇器
# print(soup.select('.a1')) # [<a class="a1" href="" id="">尚硅谷</a>]
# print(soup.select('#l1')) # [<li id="l1">張三</li>]

# 屬性選擇器
# 查找li標(biāo)簽中有id的標(biāo)簽
# print(soup.select('li[id]')) # [<li id="l1">張三</li>, <li id="l2">李四</li>]
# 查找到li標(biāo)簽中id為l2的標(biāo)簽
# print(soup.select('li[id="l2"]')) # [<li id="l2">李四</li>]

# 層級選擇器
# 后代選擇器
# 找到的是div下面的li
# print(soup.select('div li')) # [<li id="l1">張三</li>, <li id="l2">李四</li>, <li>王五</li>]

# 子代選擇器
# 某標(biāo)簽的第一級子標(biāo)簽
# 注意:很多的計算機編程語言中。如果不加空格不會輸出內(nèi)容 但是bs4中 不會報錯 會顯示內(nèi)容
# print(soup.select('div > ul > li')) # [<li id="l1">張三</li>, <li id="l2">李四</li>, <li>王五</li>]

# 找到a標(biāo)簽和li標(biāo)簽
# print(soup.select('a,li')) # [<li id="l1">張三</li>, <li id="l2">李四</li>, <li>王五</li>, <a class="a1" href="" id="">尚硅谷</a>, <a href="" title="a2">百度</a>]

# 節(jié)點信息
# 獲取節(jié)點內(nèi)容
# obj = soup.select('#d1')[0]
# 如果標(biāo)簽對象中 只有內(nèi)容 那么string和get_text()都可以使用
# 如果標(biāo)簽對象中 除了內(nèi)容還有標(biāo)簽 那么string就獲取不到數(shù)據(jù) 而get_text()是可以獲取數(shù)據(jù)
# 我們一般情況下 推薦使用get_text()
# print(obj.string)
# print(obj.get_text())

# 節(jié)點屬性
# obj = soup.select('#p1')[0]
# name是標(biāo)簽的名字
# print(obj.name)
# 將屬性值作為一個字典返回
# print(obj.attrs)

# 獲取節(jié)點的屬性
obj = soup.select('#p1')[0]
print(obj.attrs.get('class'))

二、冬天的第一杯星巴克送給你!

1.開啟尋她之路

首先,進(jìn)入星巴克官網(wǎng):??星巴克??,然后進(jìn)入主頁的菜單界面,找到星巴克的一些種類!

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_數(shù)據(jù)_03

2.找到我喜歡的那個她

單擊右鍵進(jìn)行檢查然后刷新界面:

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_爬蟲_04

在解析的網(wǎng)絡(luò)模塊數(shù)據(jù)中,我們看到了menu這個東西,我深深地被她吸引了,所以說我打算試一試,看看到底是啥吸引了我!

在她的預(yù)覽中心,我們可以看到,有很多不同種類的咖啡:

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_數(shù)據(jù)挖掘_05

然后在標(biāo)頭中找到我們需要的接口,來對她進(jìn)行更深一步的了解:

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_數(shù)據(jù)挖掘_06

3.更加深入的了解她的內(nèi)心

1.嘗試直接進(jìn)入,看看她是否對我有防備

通過給定的接口直接進(jìn)入:

import urllib.request
url = 'https://www.starbucks.com.cn/menu/'

response = urllib.request.urlopen(url)
content = response.read().decode('utf-8')
print(content)

得到我們的數(shù)據(jù):

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_python_07

點擊??ctrl+F??搜索一下之前頁面上的第一杯奶茶:??阿馥奇朵??看看有沒有:

我們可以看到找到了!

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_python_08

2.更加一步解析她的內(nèi)心

對她大概有了一個了解之后,我們要深入到她的各個品性中去,我們她的每一個品性進(jìn)行深入了解!

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_數(shù)據(jù)_09

進(jìn)一步分析,我們可以獲取各類咖啡的不同解析位置:

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_原力計劃_10

這些標(biāo)簽里面的的小標(biāo)簽分別代表不同類型咖啡里面的不同名稱。

進(jìn)一步使用我的Xpath獲取數(shù)據(jù)具體內(nèi)容:

xpath不懂的同學(xué)自覺看:??1024不孤單!??Xpath爬蟲——你最忠實的伴侶:老規(guī)矩給我一分鐘,萬字教你入手Xpath!?

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_數(shù)據(jù)挖掘_11

獲取具體內(nèi)容:

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_數(shù)據(jù)_12

4.初步打開心扉

按照我們剛才的步驟,使用bs4整理一下我們的思路代碼:

import urllib.request
url = 'https://www.starbucks.com.cn/menu/'

response = urllib.request.urlopen(url)
content = response.read().decode('utf-8')
# print(content)
from bs4 import BeautifulSoup
soup = BeautifulSoup(content,'lxml')
# //ul[@class="grid padded-3 product"]//strong/text()
name_list = soup.select('ul[class="grid padded-3 product"] strong')
print(name_list)

得到:

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_原力計劃_13

5.分析完畢,直接拿下?。。?/h2>
import urllib.request
url = 'https://www.starbucks.com.cn/menu/'

response = urllib.request.urlopen(url)
content = response.read().decode('utf-8')
# print(content)
from bs4 import BeautifulSoup
soup = BeautifulSoup(content,'lxml')
# //ul[@class="grid padded-3 product"]//strong/text()
name_list = soup.select('ul[class="grid padded-3 product"] strong')
# print(name_list)
for name in name_list:
print(name.string)

獲取其中的字符串:

for name in name_list:
print(name.string)
# 或者
print(name.get_text())

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_原力計劃_14

??????如果你喜歡的話,就不要吝惜你的一鍵三連了~

爬蟲中的戀愛學(xué)心理你get了嗎?一杯星巴克溫暖你的整個冬天——爬蟲bs4解析從入門到入坑_數(shù)據(jù)挖掘_15



本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >