Извлечь список URL-адресов из веб-поиска linkGrabber - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь выполнить поиск в Google, а затем извлечь все URL-адреса из поиска, но я застрял. Вот веб-поиск: "intext: testfile.exe"

https://www.google.com/search?source=hp&ei=_rNeXtXEHLWwytMPhJmz0Aw&q=intext%3Atestfile.exe

Вот код python, который у меня есть:

import re
import linkGrabber

#links = linkGrabber.Links('https://www.google.com/search?source=hp&ei=_rNeXtXEHLWwytMPhJmz0Aw&q=intext%3Atestfile.exe')
for x in links.find('a', attrs={'href': re.compile("^https://")}, duplicates=False):
    #print (x.get('href'))
    fo = open("URLs.txt", "w")
    fo.write(x.get('href'))
fo.close()

1 Ответ

0 голосов
/ 03 марта 2020

Я не совсем знаком с linkGrabber, но с точки зрения BS4 (и это может быть достигнуто только с помощью bs4):

from bs4 import BeautifulSoup
import requests
import re

soup = BeautifulSoup(requests.get('https://www.google.com/search?source=hp&ei=_rNeXtXEHLWwytMPhJmz0Aw&q=intext%3Atestfile.exe').content) 
with open('urls.txt', 'w') as f:
    for link in soup.find_all(name='a', attrs={'href': re.compile('/url\?q=')}):
       f.write(link.attrs['href'].lstrip('/url?q=') 

Производит следующее:

https://kc.mcafee.com/corporate/index%3Fpage%3Dcontent%26id%3DKB90863&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjAAegQIARAB&usg=AOvVaw2rsfAwi5ERbRHQ81bnwVEj
https://community.mcafee.com/t5/Endpoint-Security-ENS/McAfee-ATP-RP-S-TestFile-exe-ID-5/td-p/623667&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjABegQICRAB&usg=AOvVaw0rFtkZ9BUM8rWrBnvrfVqK
https://www.hybrid-analysis.com/sample/56afd27f2010b63ed00d8db0034833a1dc63bd3dae41c2555e2669e445815d41%3FenvironmentId%3D100&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjACegQIBxAB&usg=AOvVaw3Lv0GrbOT-c0TY60n5XNKY
https://hybrid-analysis.com/sample/2ef68884f5b59c6ff4240e6e61e1583fe77cc28a4494bfb2e7a395b31bc49e91%3FenvironmentId%3D100&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjADegQICBAB&usg=AOvVaw0wREqjYkINqxsESIhanSFV
https://www.joesandbox.com/analysis/45105/0/pdf&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjAEegQIBhAB&usg=AOvVaw223qTN8J8GwX4BiyrwJhwW
http://helpserver.biz/onlinehelp/lpmme/7.0/generator/help2000/exe-flash_application_using_exe_fi.html&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjAFegQIBBAB&usg=AOvVaw03DjaCaUcaKWe3ygGSbWI1
https://stackoverflow.com/a/54102103&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjAGegQIAxAB&usg=AOvVaw0L9O3uHmsRM9FORU3yYVmf
https://wiki.itarian.com/frontend/web/topic/download-pdf/ccs-profile-paths-rules-and-special-symbol-use&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjAHegQIBRAB&usg=AOvVaw20Y_3a7Ewk2wmWN6uscOzi
https://www.ccleaner.com/docs/defraggler/advanced-usage/command-line-parameters&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjAIegQIABAB&usg=AOvVaw2BSd_sIyvQFxtaerNOmNSJ
https://www.registry-programs.com/process/list/testfile.exe.html&sa=U&ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjAJegQIAhAB&usg=AOvVaw1UNdwgn-QTqhYQ8m_MpI5j
https://accounts.google.com/ServiceLogin%3Fcontinue%3Dhttps://www.google.com/search%253Fsource%253Dhp%2526ei%253D_rNeXtXEHLWwytMPhJmz0Aw%2526q%253Dintext:testfile.exe%26hl%3Den&sa=U&ved=0ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8Qxs8CCC0&usg=AOvVaw0XtHw3wxFlE0uI5pIgV9Zq

I не знаю, откуда взялась последняя ссылка, но если она постоянна, проверить это довольно просто. Может быть, linkGrabber не вернет это. Вы можете явно искать какое-то соответствие с этим типом ссылки или просто не писать URL, которые возвращают 404 в ваш файл, вы можете проверить это с помощью requests.get

Что касается пояснения, пропустите операторы импорта:

  • Возьмите html для предоставленной ссылки OP и проанализируйте, используя BeautifulSoup, в объект BeautifulSoup.
  • Использование диспетчера контекста для открытия выходного файла означает, что у вас нет явно закрыть его, и это хорошо, и pythoni c
  • перебирает все теги a в супе с атрибутом href, который соответствует предоставленной строке регулярного выражения. Обратите внимание, что я изменил значение строки регулярного выражения в связи с тем, что на самом деле было в html, Google должен добавлять результаты поиска к этой подстроке. Также в части https пропущены результаты, которые не защищены https. Вот пример фактического HTML из предоставленного поиска
<a href="/url?q=https://www.registry-programs.com/process/list/testfile.exe.html&amp;sa=U&amp;ved=2ahUKEwiS7JLniv_nAhWmyYsBHVKeCG8QFjAJegQIAhAB&amp;usg=AOvVaw1UNdwgn-QTqhYQ8m_MpI5j"><div class="BNeawe vvjwJb AP7Wnd">Is it testfile.exe a virus? How to fix testfile.exe file error?</div><div class="BNeawe UPmit AP7Wnd">https://www.registry-programs.com › process › list › testfile.exe.html</div></a>
  • Затем мы используем тег .attrs, чтобы получить доступ к его атрибутам в качестве словаря и удалить эту странную строку, которую добавляет Google и напишите в открытый файл

Последнее замечание. Я подозреваю, что у вас возникла проблема со строкой регулярного выражения, которую вы указали для find_all, попробуйте ее с той из моего решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...