#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. Нет, я просто понял, что цифры были одинаковыми в обеих ссылках. По-видимому, это номер патента, который позволяет осуществлять удобный взлом ссылок.