Не царапайте GitHub.Очистка хрупкая и очень неудобна для сайтов, которые интенсивно используют JavaScript.
Используйте его API вместо:
https://api.github.com/search/code?q=https%3A%2F%2Fsonarcloud.io%2Fdashboard
Для поиска во всех репозиториях вы будетевсе же нужно аутентифицировать , хотя.Вам нужно передать свой auth
хеш в HTTParty.get()
:
auth = {:username => "username", :password => "password"}
a = HTTParty.get(url, :basic_auth => auth)
# ^ Here
Идиоматически, это может выглядеть как
auth = {username: "username", password: "password"}
a = HTTParty.get(url, basic_auth: auth)
У вас также есть опечатка - usarname
вместоusername
- что я исправил в своей версии.
Редактировать: Если вы хотите получить конкретный сопоставленный текст, файл и строки, вам все равно не нужно их очищатьHTML.Вместо этого вы можете установить для заголовка Accept
значение application/vnd.github.v3.text-match+json
:
url = "https://api.github.com/search/code"
query = {q: "https://sonarcloud.io/dashboard"}
auth = {username: "username", password: "password"}
headers = {"Accept" => "application/vnd.github.v3.text-match+json"}
a = HTTParty.get(url, query: query, basic_auth: auth, headers: headers)
Теперь в ответе должен быть ключ text_matches
, содержащий хэши с fragment
s, показывающими совпадениятекст, а также object_type
s (например, "FileContent"
), object_url
s и indices
.
Это также упоминается в поисковой ссылке , которую я уже предоставил:
При поиске кода вы можете получить метаданные соответствия текста для полей файла content и файла path при передаче типа носителя text-match
.Подробнее о том, как получать выделенные результаты поиска, см. Метаданные соответствия текста .