Извлечь указанный c текст с веб-страницы, используя python - PullRequest
2 голосов
/ 09 мая 2020

Вкладка «Слова» в следующем URL-адресе показывает слова, которые доступны в арабском c курсе, за которым я следую в Duolin go:

https://duome.eu/theahmedmustafa/progress

Слова, которые я уже выучил, выделены жирным синим цветом, а остальные - обычным шрифтом.

Я хочу, чтобы метод (предпочтительно Python или Java) извлеките слова, которые я уже выучил. Я пытался использовать Python Запросы на доступ к исходному коду страницы и работать оттуда, но похоже, что он не содержит никакой информации, которая могла бы использоваться для фильтрации выученных слов от остальных.

Любая помощь буду признателен!

Изображение: Снимок страницы

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

Как вы правильно заметили, это «Веб-парсинг», и python имеет для этого замечательные модули. Наиболее очевидный из них -> BeautifulSoup

Итак, чтобы получить информацию с вашей веб-страницы,

  • вам нужно сначала понять структуру веб-страницы.
  • Кроме того, в некоторых случаях это может быть не полностью законным
  • более серьезная проблема заключается в том, поддерживает ли веб-страница парсинг
    • это можно выяснить, посмотрев на источник веб-страницу.
    • если текст / информация, которую вы хотите получить, можно просмотреть в источнике или в одном из hrefs, тогда должна быть возможность очистить его с помощью Beautifulsoup.

Решение -

  • Прежде чем вы придете к решению, вы должны понять структуру HTML и способы, которыми вы можете идентифицировать любой элемент на веб-странице
  • существует множество способов, например

    • с использованием «id» любого элемента на веб-странице;
    • с использованием класса или тэга напрямую;
    • с использованием xpath элемента
    • или также комбинацию любых или всех из вышеперечисленного
  • как только вы достигнете этой точки, к настоящему времени вам должно быть ясно, по какому пути мы продолжим движение по

#make a request to the webpage, and grab the html respone
page = requests.get("your url here").content

#pass it on to beautifulsoup 
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')

#Depending on how you want to find, you can use  findbyclass, findbytag, and #other methods 
soup.findAll('your tag')
1 голос
/ 09 мая 2020

Этот скрипт должен напечатать все жирные слова с вашей страницы:

import re
import requests
from bs4 import BeautifulSoup

cookie_url = 'https://duome.eu/tz.php?time=GMT%202'
vocabulary_url = 'https://duome.eu/vocabulary/en/ar/{user_id}'
url = 'https://duome.eu/theahmedmustafa/progress'

with requests.session() as s:
    s.get(cookie_url).text  # load cookies
    html_data = s.get(url).text
    user_id = re.search(r'/vocabulary/en/ar/(\d+)', html_data).group(1)
    soup = BeautifulSoup(s.get(vocabulary_url.format(user_id=user_id)).text, 'html.parser')
    for a in soup.select('#words li > b > a'):
        print(a.text)

Это напечатает:

أَرْوى
أَلْمانْيا
أَمريكا
أَمريكِيّ
أَمْريكِيّة
أَمْسْتِرْدام
أَنا
أَنْتَ
أَنْتِ
أَهْلاً
أَيْن
أُرْدُنِيّ
أُرْدُنِيّة
أُسْتاذ
أُسْتُرالْيا
إِسْكُتْلَنْدا
إِسْكُتْلَنْدِيّ
إِسْلامِيّة
إِنْجِليزِيّ
إِنْجِلْتِرا
امْرَأة
اِمْرَأة
باب
باريس

... and so on.
...