Невозможно очистить URL-адрес патента Google с помощью python и красивого супа

#python #beautifulsoup #google-patent-search

Вопрос:

В настоящее время я пытаюсь найти ссылку на патенты Google на этой странице, https://datatool.patentsview.org/#detail/patent/10745438, но когда я пытаюсь распечатать все ссылки с тегом «а», появляется только несвязанный веб-сайт.

Вот мой код до сих пор:

 url = 'https://datatool.patentsview.org/#detail/patent/10745438'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

links = []
print(soup)
for link in soup.find_all('a', href=True):
    print(link['href'])
 

Когда я распечатываю суп, тег » а » со ссылкой на патенты Google не печатается, как и ссылка в массиве. Единственное, что напечатано, это

 http://uspto.gov/
tel:1-800-786-9199
./#viz/relationships
./#viz/locations
./#viz/comparisons
 

, что является всей ненужной информацией. Защищает ли Google каким-либо образом свои ссылки, или есть какой-либо другой способ, которым я могу получить ссылку на патент Google или перенаправить на страницу?

Комментарии:

1. Похоже, что ссылки защищены. Если вы выберете inspect-element (на веб-странице), вы заметите , что ссылки находятся внутри div class="overlay" , что не отображается в проанализированном супе.

2. Есть ли в любом случае доступ к ссылке, даже если она защищена?

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

4. @pedwards Да, я пытаюсь получить ссылку, которая перенаправляет на патент Google, в частности, google.com/patents/US10745438 , в данном случае. В тексте в качестве гиперссылки указано «перейти в Google patent».

5. Я пытался установить пакет, который показался мне очень интересным, который выполнял бы ту функцию, которую вы пытаетесь выполнить. По какой-то причине у меня возникли проблемы с его установкой. Но взгляните на пакет python requests_html. Я думаю, что это будет делать именно то, что вы хотите. pypi.org/project/requests-html

Ответ №1:

Не царапайте его, просто сделайте несколько взломов ссылок:

 url = 'https://datatool.patentsview.org/#detail/patent/10745438'
google_patents_url = 'https://www.google.com/patents/US'   url.rsplit('/', 1)[1]
 

Комментарии:

1. Замечательный обходной путь. Но все же, как вы это узнали? Была ли какая-либо конкретная документация/API?

2. Нет, я просто понял, что цифры были одинаковыми в обеих ссылках. По-видимому, это номер патента, который позволяет осуществлять удобный взлом ссылок.