Как найти все страницы статей ieee для очистки с помощью BeautifulSoup (Просто все URL статьи автоматически) - PullRequest
1 голос
/ 19 октября 2019

Я хочу найти все страницы статей и удалить заголовок и тег описания, и сначала моя проблема заключается в поиске всех статей, и для поиска статей нам нужно искать в окне поиска, но я хочу сделать это автоматически. Я думаю, что одним из подходов может быть использование карты сайта, но я не уверен в этом. Пожалуйста, помогите мне найти способ.

Я знаю, как я могу очистить сайт, но в этом случае моя проблема заключается в том, как найти все статьи без поиска в окне поиска и автоматически в ieee (например, ). https://ieeexplore.ieee.org/).

Я хочу получить все страницы статьи в https://ieeexplore.ieee.org (только все URL страницы статьи).

1 Ответ

0 голосов
/ 19 октября 2019

Когда вы нажимаете кнопку поиска, она перенаправляет вас на ссылку

https://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=smart%20grid

Параметр queryText является вашим поисковым запросом. Контент загружается с использованием JavaScript, поэтому вы не можете просто отправить запрос на ссылку, а затем проанализировать ответ. Вы можете

  • Использовать селен для перехода по ссылке или
  • Эмулировать XHR-запрос, используемый на этой странице

С помощью Selenium перейдите по ссылке (с вашим предпочтительным поисковым термином), нажмите кнопку «Загрузить больше», пока не загрузите достаточно статей, а затем получите ответ.

Я предпочитаю эмулировать XHRrequest b'coz это быстрее.

import requests
# change this for a different search term
search_term = "smart grid"
# change this for different page no
page_no = 1

headers = {
    "Accept": "application/json, text/plain, */*",
    "Origin": "https://ieeexplore.ieee.org",
    "Content-Type": "application/json",
}
payload = {
    "newsearch": True,
    "queryText": search_term,
    "highlight": True,
    "returnFacets": ["ALL"],
    "returnType": "SEARCH",
    "pageNumber": page_no
}
r = requests.post(
        "https://ieeexplore.ieee.org/rest/search",
        json=payload,
        headers=headers
    )
page_data = r.json()
for record in page_data["records"]:
    print(record["articleTitle"])
    print('https://ieeexplore.ieee.org'+record["documentLink"], end="\n----\n")

Вывод

IEEE Vision for Smart Grid Controls: 2030 and Beyond Reference Model
https://ieeexplore.ieee.org/document/6598993/
----
IEEE Vision for Smart Grid Control: 2030 and Beyond Roadmap
https://ieeexplore.ieee.org/document/6648362/
----
Software models for Smart Grid
https://ieeexplore.ieee.org/document/6225717/
----
IEEE Vision for Smart Grid Communications: 2030 and Beyond Roadmap
https://ieeexplore.ieee.org/document/6690098/
----
IEEE Smart Grid Vision for Computing: 2030 and Beyond Roadmap
https://ieeexplore.ieee.org/document/7376995/
----
...

Ответ в формате JSON, который мы можем проанализировать с помощью python, чтобы получить желаемый вывод. URL https://ieeexplore.ieee.org/rest/search можно получить с помощью вкладки network в инструментах разработчика браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...