Я хотел поэкспериментировать с python, чтобы изучить его, поэтому я беру небольшой проект, но часть его требует от меня поиска имени в этом списке:

https://bughunter.withgoogle.com/characterlist/1

(число 1 нужно увеличивать на единицу каждый раз, чтобы искать имя)

Так что я буду работать с HTML, я новичок в python и был бы признателен, если бы кто-нибудь дал мне пример того, как заставить это работать.

0
Ons Ali 28 Май 2017 в 23:13

2 ответа

Лучший ответ
import json
import requests
from bs4 import BeautifulSoup

URL = 'https://bughunter.withgoogle.com'


def get_page_html(page_num):
    r = requests.get('{}/characterlist/{}'.format(URL, page_num))
    r.raise_for_status()
    return r.text


def get_page_profiles(page_html):
    page_profiles = {}
    soup = BeautifulSoup(page_html)
    for table_cell in soup.find_all('td'):
        profile_name = table_cell.find_next('h2').text
        profile_url = table_cell.find_next('a')['href']
        page_profiles[profile_name] = '{}{}'.format(URL, profile_url)
    return page_profiles


if __name__ == '__main__':
    all_profiles = {}
    for page_number in range(1, 81):
        current_page_html = get_page_html(page_number)
        current_page_profiles = get_page_profiles(current_page_html)
        all_profiles.update(current_page_profiles)
    with open('google_hall_of_fame_profiles.json', 'w') as f:
        json.dump(all_profiles, f, indent=2)

Ваш вопрос не был ясен о том, как вы хотели структурировать данные после очистки, поэтому я просто сохранил профили в формате dict (с парой ключ / значение как {profile_name: profile_url}), а затем выгрузил результаты в файл json.

Дайте мне знать, если что-то неясно!

0
G_M 29 Май 2017 в 18:32

Попробуй это. Сначала вам нужно будет установить bs4 (python 3). Он получит все имена людей на странице сайта:

from bs4 import BeautifulSoup as soup
import urllib.request
text=str(urllib.request.urlopen('https://bughunter.withgoogle.com/characterlist/1').read())
text=soup(text)
print(text.findAll(class_='item-list')[0].get_text())
0
whackamadoodle3000 29 Май 2017 в 00:06