Использование str_match_all для сопоставления начала и конца символов в R - PullRequest
0 голосов
/ 07 декабря 2018

Уважаемое сообщество Stackoverflow,

Я пытаюсь извлечь уникальные цифровые идентификаторы с веб-сайта, используя stringR.На сайте есть несколько уникальных doi, и после окончания doi за ним следует символ «Cite».

[1] Я получаю информацию с веб-сайта pg <- read_html ("<a href="https://search.datacite.org/works?query=Movebank&resource-type-id=dataset" rel="nofollow noreferrer">https://search.datacite.org/works?query=Movebank&resource-type-id=dataset")[2] Я пытаюсь получить 26 уникальных строк символов с веб-сайта, которые начинаются с "doi"

[3] Я планировал использовать string_match_all с началом, которое должно совпадать с "https://doi.org/", некоторыми символамимежду "*" и концом должно совпадать слово "Cite".

str_match_all (html_text (html_nodes (pg, "body")), pattern = "^ https://doi.org/*Cite$") [4]Пример того, как может выглядеть один из этих doi:

https://doi.org/10.5441/001/1.41076dq1/6 Цитировать

Любая помощь очень ценится!

С уважением,

Diego

1 Ответ

0 голосов
/ 07 декабря 2018

Используя код, подобный приведенному ниже ответу hrbrmstr, вы можете легко получить все URL, которые хотите.https://stackoverflow.com/a/46674097/10710995

fils <- html_nodes(pg, xpath=".//a[contains(@href, 'doi.org')]")

df <- data.frame(link= html_attr(fils, "href"))

 df
                                          link
1  https://doi.org/10.25504/fairsharing.httzv2
2     https://doi.org/10.5441/001/1.41076dq1/6
3     https://doi.org/10.5441/001/1.q986rc29/3
4     https://doi.org/10.5441/001/1.q986rc29/4
5       https://doi.org/10.5441/001/1.25551gr6
6     https://doi.org/10.5441/001/1.25551gr6/1
7     https://doi.org/10.5441/001/1.25551gr6/2
8     https://doi.org/10.5441/001/1.q8b02dc5/4
...