Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 6, 2017 17:41:58

forexjoker
Зарегистрирован: 2017-06-06
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со списком

Добрый день, подскажите пожалуйста. Есть задача:
- По запросу “ххх” парсим выдачу Гугл
- Тащим все ссылки
- Переходим по этим ссылкам и парсим Заголовки сайтов.
Вот завис на третьем шаге, вот код:

 import requests, re
from bs4 import BeautifulSoup
url = 'http://www.google.com/search'
keyword = input("vvodim zapros:  ")
payload = {'q': keyword, 'start': '0', 'num':'20'}
my_headers = {'User-agent': 'Mozilla/11.0'}
r = requests.get(url, params=payload, headers=my_headers)
soup = BeautifulSoup(r.text, 'html.parser')
h3tags = soup.find_all('h3', class_='r')
for h3 in h3tags:
    try:
        massiv = []
        massiv.append(re.search('url\?q=(.+?)\&sa', h3.a['href']).group(1))
        print(massiv)
    except:
        continue
На данный момент у меня выводит 20 сайтов, по тому запросу, который я набираю. Но мне нужно сейчас:
1. Отсеить дубли страниц, чтобы не было вот такого:
'хттп/kaban.tv:8080/']
'хттп/ kaban.tv:8080/rossiya-1-online'
'хттп/kaban.tv:8080/tnt-online'
2. Взять каждую ссылку и перейти по ней.
В этом и заключается вопрос: “Как мне убрать дубли страниц и как вытащить из списка всех ссылок ссылку1, ссылку2 и так далее?”
Буду очень благодарен за помощь!

Отредактировано forexjoker (Июнь 6, 2017 17:42:50)

Офлайн

#2 Июнь 7, 2017 03:51:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10014
Репутация: +  857  -
Профиль   Отправить e-mail  

Работа со списком

Нужно на функциях всё делать.
У тебя же всё вперемешку, из-за чего при малейшем усложнении задания всё ломается целиком.

Сделай функцию загрузки страницы по запросу. Ты ей подаёшь строку запроса, а она тебе возвращает страницу с результатами.

Сделай функцию выделения ссылок из страницы. Ты ей подаёшь текст страницы, а она тебе возвращает список ссылок.

Сделай функцию фильтрования ссылок из списка ссылок. Ты ей подаёшь список ссылок, а она тебе возвращает отфильтрованный список ссылок.

Сделай функцию загрузки страницы по адресу. Ты ей подаёшь адрес, а она тебе возвращает страницу с этого адреса.

Сделай функцию извлечения заголовка страницы. Ты ей подаёшь текст страницы, а она тебе возвращает заголовок страницы.

Потом сделай общую функцию, которая управляет всеми этими функциями.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version