@David5

Почему в парсер не приходят данные?

Написал небольшой парсер, по второй ссылке приходят данные, а по первой массив пустой, статус 200, а данных нет, может это связанно с русским доменом, хотя я через сервис декодировал в англ.
checklist = {
    'лип' : ['https://xn--80aacoonefzg3am8b1fsb.xn--p1ai/news', '//*[@id="news__area-blocks"]/a[1]/div/div[3]/text()', '//*[@id="news__area-blocks"]/a[1]/@href', 'https://xn--80aacoonefzg3am8b1fsb.xn--p1ai/news'],
    'следственный комитет' : ['https://lipetsk.sledcom.ru', '//*[@id="news_tab-1"]/div[1]/div[1]/div[2]/div[3]/a/text()', '//*[@id="news_tab-1"]/div[1]/div[1]/div[2]/div[3]/a/@href', 'https://lipetsk.sledcom.ru']
}



def get_titles(checklist):
     

  for site in checklist.items():
 
    user_agent = ('Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) '
              'Gecko/20100101 Firefox/50.0')

    html_text = requests.get(site[1][0], headers={'User-Agent':user_agent}).text

    tree = lxml.html.document_fromstring(html_text)

    text_titles = tree.xpath(site[1][1])
    text_link = tree.xpath(site[1][2])
        

 

    yield text_titles, text_link


 



for i in get_titles(checklist):
    print(i)

Почему в парсер не приходят данные?
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
nullnull
@nullnull
Есть вариант, что первый просто загружает данные через JS или что там нынче модно, и вы просто не можете в таких парсерах получать данные. Или он вам присылает страницу для robot, хоть и есть Юзер-агент.

Поставьте точку остановки на строке "tree = lxml.html.document_fromstring(html_text)" и запустите через дебаг.
Посмотрите, как выглядит страница html_text, всё ли с ней нормально?
Потом посмотрите в браузере "исходный код страницы", есть ли там то, что вы ищите.

Если всё это есть, то ошибка у вас в коде или в xPath запросе. А если этого нет в html_text, то и получить это нельзя таким способом :) Придётся менять подход или инструменты для парсинга.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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