Задать вопрос
@Fokinura_3000

Как распарсить несколько url из файла в формате «excel»?

Есть экселевский файл, который содержит ссылки в одном столбике.
Как правильно вытащить название приложений, которые он выдает по ссылкам?

Пример файла на картинке:
61e70a469dba3168477345.jpeg
Продублирую сюда часть ссылок из списка:
https://play.google.com/store/apps/details?id=com.vkontakte.android
https://play.google.com/store/apps/details?id=ru.ok.android
https://play.google.com/store/apps/details?id=com.outfit7.talkingtomgoldrun
https://play.google.com/store/apps/details?id=com.tapclap.piratetreasures2
https://play.google.com/store/apps/details?id=com.openmygame.games.android.wordpizza
https://play.google.com/store/apps/details?id=com.outfit7.mytalkingtomfriends
https://play.google.com/store/apps/details?id=com.hornet.android

Образец моего кода:
import requests
from bs4 import BeautifulSoup
import pandas as pd

df = pd.read_excel('ids.xlsx')
url = df

for urlibs in url:
    response = requests.get(urlibs)
    soup = BeautifulSoup(response.text, 'lxml')
    quotes = soup.find_all('h1', class_='AHFaub')
for quote in quotes:
    print(quote.text)

При моём коде выдаёт только первую строчку, а как можно получит все строчки?
  • Вопрос задан
  • 480 просмотров
Подписаться 2 Средний 16 комментариев
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
сохраняйте документ в csv, а его уже любым удобным инструментом обрабатывайте
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@webster_r
# -*- coding: utf-8 -*-
import pandas as pd
import requests
from bs4 import BeautifulSoup

filename = 'ids.xlsx'
df = pd.read_excel(filename)
url = df.iloc[:, 0].tolist() # Преобразую нулевую колонку к списку

for urlibs in url:
    response = requests.get(urlibs)
    soup = BeautifulSoup(response.text, 'lxml')
    appname = soup.find('h1', class_='AHFaub').text
    print(appname)


Вариант быстрого парсинга (многопоточность)
# -*- coding: utf-8 -*-
import pandas as pd
import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor

filename = 'ids.xlsx'
df = pd.read_excel(filename)
urls = df.iloc[:, 0].tolist()


def get_app_name(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'lxml')
    appname = soup.find('h1', class_='AHFaub').text
    print(appname)

# Число воркеров можно изменить на свое усмотрение
with ThreadPoolExecutor(max_workers=16) as executor: 
    executor.map(get_app_name, urls)
Ответ написан
Комментировать
@kapp1
Нельзя просто так по датафрейму пробежать циклом, надо достать значение и подавать их на вход в реквест.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы