我想通過網路抓取為我的專案從
當我執行以下代碼時;
def getAndParseURL(url):
result = requests.get(url,headers={"User-Agent":"Mozilla/5.0"})
soup = bts(result.text, 'html.parser')
return soup
html = getAndParseURL("https://www.cimri.com/cep-telefonlari/en-ucuz-oppo-a74-128gb-4gb-ram-6- 43-inc-48mp-akilli-cep-telefonu-siyah-fiyatlari,775993409")
for i in html.findAll("div",{"class":"s10v53f3-0 bfgzQt"}) :
for b in i.findAll("ul",{"class":"s10v53f3-2 goYFek"}) :
for c in b.findAll("li",{"class":"s10v53f3-4 rKbMg"}) :
for d in c.findAll("span",{"class":"s10v53f3-6 geozbR"}) :
print(d)
它為我提供了如下所示的所有技術特性;
<span class="s10v53f3-6 geozbR">6.43 in?</span>
<span class="s10v53f3-6 geozbR">AMOLED</span>
<span class="s10v53f3-6 geozbR">FHD </span>
<span class="s10v53f3-6 geozbR">1080x2400 Piksel</span>
<span class="s10v53f3-6 geozbR">84.4 %</span>
<span class="s10v53f3-6 geozbR">409 PPI</span>
<span class="s10v53f3-6 geozbR">Kapasitif Ekran</span>
<span class="s10v53f3-6 geozbR">800</span>
<span class="s10v53f3-6 geozbR">1000000:1</span>
<span class="s10v53f3-6 geozbR">Qualcomm SM6115 Snapdragon 662</span>
<span class="s10v53f3-6 geozbR">2.0 GHz</span>
<span class="s10v53f3-6 geozbR">Adreno 610</span>
<span class="s10v53f3-6 geozbR">4 GB RAM</span>
<span class="s10v53f3-6 geozbR">Android 11</span>
<span class="s10v53f3-6 geozbR">Android</span>
<span class="s10v53f3-6 geozbR">8 ?ekirdek</span>
<span class="s10v53f3-6 geozbR">11 nm</span>
<span class="s10v53f3-6 geozbR">64 bit</span>
<span class="s10v53f3-6 geozbR">950 MHz</span>
<span class="s10v53f3-6 geozbR">LPDDR4x</span>
<span class="s10v53f3-6 geozbR">?ift Kanal</span>
<span class="s10v53f3-6 geozbR">48 MP</span>
<span class="s10v53f3-6 geozbR">F2.4</span>
<span class="s10v53f3-6 geozbR">16 MP</span>
<span class="s10v53f3-6 geozbR">F1.7</span>
<span class="s10v53f3-6 geozbR">F2.4</span>
<span class="s10v53f3-6 geozbR">1080p (Full HD)</span>
<span class="s10v53f3-6 geozbR">30 FPS</span>
<span class="s10v53f3-6 geozbR">2 MP</span>
<span class="s10v53f3-6 geozbR">LED</span>
<span class="s10v53f3-6 geozbR">73.8 mm</span>
<span class="s10v53f3-6 geozbR">160.3 mm</span>
<span class="s10v53f3-6 geozbR">8 mm</span>
<span class="s10v53f3-6 geozbR">175 gr</span>
<span class="s10v53f3-6 geozbR">Siyah</span>
<span class="s10v53f3-6 geozbR">USB Type-C</span>
<span class="s10v53f3-6 geozbR">Li-Po</span>
<span class="s10v53f3-6 geozbR">5000 mAh</span>
<span class="s10v53f3-6 geozbR">128 GB</span>
<span class="s10v53f3-6 geozbR">5.0</span>
<span class="s10v53f3-6 geozbR">3.5 mm</span>
<span class="s10v53f3-6 geozbR">Wi-Fi 5</span>
<span class="s10v53f3-6 geozbR">42.2 Mbps</span>
<span class="s10v53f3-6 geozbR">5.76 Mbps</span>
<span class="s10v53f3-6 geozbR">2021</span>
<span class="s10v53f3-6 geozbR">Ekran ??inde</span>
<span class="s10v53f3-6 geozbR">Nano-SIM (4FF)</span>
<span class="s10v53f3-6 geozbR">30</span>
<span class="s10v53f3-6 geozbR">1080p</span>
我已經將所有功能作為字典,但是當我查看所有手機的品牌和型號時,每個品牌和每個型號都有不同數量的功能,要創建資料框,每個品牌和每個型號都必須具有相同的列,所以我決定在資料框中獲取其中一些功能。
uj5u.com熱心網友回復:
注意:您的問題需要更加清晰才能獲得具體答案。所以我只想顯示兩個選項來處理您的評論并有助于拉近關系。它們基于在請求時可用的產品
我想得到一個特定的,比方說,處理器型號和記憶體大小。
選項1
只需選擇span包含您的屬性的taht 并從其直接兄弟中獲取文本:
processorModel = soup.select_one('span:-soup-contains("??lemci Modeli") span').text
--> Apple A13 Bionic
memorySize = soup.select_one('span:-soup-contains("RAM Kapasitesi") span').text
-->3 GB RAM
選項#2
使用結構化資訊創建一個 dict 并迭代以選擇您的屬性:
specs = {}
for x in soup.select('[name="specs"] ul'):
specs[x.li.text]= {list(s.stripped_strings)[0]:list(s.stripped_strings)[1] for s in x.select('li:has(span)')}
specs
-->
{'Model Bilgisi': {'Iphone Modelleri': 'Iphone SE'},
'Ekran ?zellikleri': {'Ekran Boyutu': '4.7 in?',
'Ekran Teknolojisi': 'IPS LCD',
'??zünürlük Standart?': 'HD ',
'Ekran ??zünürlü?ü': '750x1334 Piksel',
'Ekran G?vde Oran?': '65.4 %',
'Piksel Yo?unlu?u': '326 PPI',
'Multi Touch': 'Var',
'Dokunmatik Türü': 'Kapasitif Ekran',
'Ekran Parlakl??? (cd/m2)': '625',
'?izilmeye Kar?? Dayan?kl?l?k': 'Var',
'Ekran Kontrast Oran?': '1400:1',
'Sürekli A??k Ekran': 'Yok'},
'Teknik ?zellikler': {'??lemci Modeli': 'Apple A13 Bionic',
'??lemci Frekans?': '2.65 GHz',
'Grafik ??lemci (GPU)': 'Apple GPU',
'RAM Kapasitesi': '3 GB RAM',
'Antutu Puan?': 'Belirtilmemi?',
'??letim Sistemi Versiyonu': 'iOS 13',
'??letim Sistemi': 'iOS',
'CPU üretim Süreci': '7 nm '},...}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377633.html
上一篇:Selenium不點擊搜索框
