Я пытаюсь (1) получить заголовок с веб-страницы, (2) напечатать заголовок, (3) перейти по ссылке на следующую страницу, (4) получить заголовок со следующей страницы и (5) напечатайте заголовок со следующей страницы.
Шаги (1) и (4) являются одинаковыми функциями, а шаги (2) и (5) являются одинаковыми функциями. Единственное отличие состоит в том, что функции (4) и (5) выполняются на следующей странице.
#Imports
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
##Internet
#Link to webpage
web_page = urlopen("http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html&r=31&f=G&l=50&co1=AND&d=PTXT&s1=(%22deep+learning%22.CLTX.+or+%22deep+learning%22.DCTX.)&OS=ACLM/%22deep+learning%22")
#Soup object
soup = BeautifulSoup(web_page, 'html.parser')
У меня нет проблем с шагами 1 и 2. Мой код может получить заголовок и распечатать его эффективно. Шаги 1 и 2:
##Get Data
def get_title():
#Patent Number
Patent_Number = soup.title.text
print(Patent_Number)
get_title()
Вывод, который я получаю, именно то, что я хочу:
#Print Out
United States Patent: 10530579
У меня проблемы с шагом 3. Для шага (3) у меня есть удалось определить правильную ссылку, но не перейти по ней на следующую страницу. Я идентифицирую ссылку, которую я хочу, 'href' над тегом изображения.
Изображение ссылки для подражания.
Следующий код - мой рабочий проект для шагов 3,4 и 5:
#Get
def get_link():
##Internet
#Link to webpage
html = urlopen("http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html&r=31&f=G&l=50&co1=AND&d=PTXT&s1=(%22deep+learning%22.CLTX.+or+%22deep+learning%22.DCTX.)&OS=ACLM/%22deep+learning%22")
#Soup object
soup = BeautifulSoup(html, 'html.parser')
#Find image
##image = <img valign="MIDDLE" src="/netaicon/PTO/nextdoc.gif" border="0" alt="[NEXT_DOC]">
#image = soup.find("img", valign="MIDDLE")
image = soup.find("img", valign="MIDDLE", alt="[NEXT_DOC]")
#Get new link
new_link = link.attrs['href']
print(new_link)
get_link()
вывод, который я получаю:
#Print Out
##/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html&r=32&f=G&l=50&co1=AND&d=PTXT&s1=(%22deep+learning%22.CLTX.+or+%22deep+learning%22.DCTX.)&OS=ACLM/"deep+learning"
Выход - это точная ссылка, по которой я хочу перейти. Короче говоря, функция, которую я пытаюсь написать, откроет переменную new_link как новую веб-страницу и выполнит те же функции, что и в (1) и (2), на новой веб-странице. В результате вы получите два заголовка вместо одного (один для веб-страницы и один для новой веб-страницы).
По сути, вместо этого мне нужно написать функцию:
urlopen(new_link)
функции:
print(new_link)
. Затем выполните шаги 4 и 5 на новой веб-странице. Тем не менее, я не могу понять, чтобы открыть новую страницу и захватить заголовок. Одна из проблем заключается в том, что new_link - это не ссылка, а ссылка, по которой я хочу щелкнуть.