Python Удаление: попытка удалить определенные c данные (сведения о телефоне) в соответствии с вводом пользователя - PullRequest
1 голос
/ 03 августа 2020

Я делаю удаление веб-страниц с www.gsmarena.com. Я хочу извлечь определенные c данные в соответствии с вводом пользователя. этот код возвращает все модели и названия телефонов, я хочу извлечь только детали телефонов samsung с указанием c входного сигнала, такого как RAM, ROM, CPU и COLOR. Помоги мне, пожалуйста. заранее спасибо.

import requests
from bs4 import BeautifulSoup


def link_scan(link_url):
    c = 1
    source_code=requests.get(link_url)
    plain_text=source_code.text
    soup = BeautifulSoup(plain_text)
    for link in soup.find_all('div',{'class':'brandmenu-v2 light l-box clearfix'}):
       for li in link.find_all('li'):
           for anc in li.find_all('a'):
               anc_src = r'http://www.gsmarena.com/' + anc.get('href')
               anc_name = anc.string
               print(c, anc_name,"\n", anc_src, "\n")
               c += 1
               inside_scan(anc_name, anc_src)


def inside_scan(name, hrefs):
    i = 1
    source_code=requests.get(hrefs)
    plain_text=source_code.text
    soup = BeautifulSoup(plain_text)
    for link in soup.find_all('div',{'class':'makers'}):
       for li in link.find_all('li'):
           for anc in li.find_all('a'):
               for nam in (sp.find('span') for sp in anc.find_all('strong')):
                   modal_name = nam.string
                   print("\t", i, "\t", name, modal_name)
                   i += 1

link_scan(r'http://www.gsmarena.com/')

1 Ответ

1 голос
/ 03 августа 2020

Я бы посоветовал как-нибудь поиграть с урлами. В вашем случае пользователь может попросить указать производителя мобильного телефона c, и целевой URL-адрес будет выглядеть следующим образом:

https://www.gsmarena.com/samsung-phones-9.php

Более того, вам очень повезло, потому что вы можете получить данные определенного мобильного телефона без перенаправления на это страница. В вашем случае каждый сотовый телефон ссылается на тег привязки с таким именем класса:

<a href="samsung_galaxy_m31s-10333.php">

Это означает, что вы можете анализировать ссылки, начинающиеся с «Samsung», чтобы фильтровать запрос в соответствии с потребностями пользователя:

https://www.gsmarena.com/samsung

Чтобы получить информацию о ЦП, ОЗУ и т. Д. c, вы должны указать теги привязки:

<a href="samsung_galaxy_m31s-10333.php"><img src="https://fdn2.gsmarena.com/vv/bigpic/samsung-galaxy-m31s.jpg" title="Samsung Galaxy M31s Android smartphone. Announced Jul 2020. Features 6.5″ Super AMOLED display, Exynos 9611 chipset, 6000 mAh battery, 128 GB storage, 8 GB RAM, Corning Gorilla Glass 3."><strong><span>Galaxy M31s</span></strong></a>
...