私はちょうどPythonを学び始めています。私はBeautifulSoupを使ってスクリプトを書こうとしています。私はこのスクリプトを実行したときに私が検索を行うのであれば、私はこのような結果を得る「StackOverflowの」BeautifulSoupを使ったパスの代わりに完全なURLを取得する
#!/usr/bin/python
from bs4 import BeautifulSoup
from six.moves import urllib
import ssl
sitelist = [
'https://www.google.com/search?q=%s',
'https://www.bing.com/search?q=%s',
'http://www.ask.com/web?q=%s',
'https://duckduckgo.com/?q=%s'
]
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
query = raw_input("What do you want to search for? ")
for url in sitelist:
url = url % (query)
try:
result = urllib.request.urlopen(url, context=ctx)
soup = BeautifulSoup(result, "lxml")
for link in soup.find_all('a'):
link = link.get('href')
try:
if query in link:
print(link)
except:
pass
except:
pass
を::ここでは私がこれまで持っているものだドロップダウンリスト
/images/search?q=stackoverflow&FORM=HDRSC2
/videos/search?q=stackoverflow&FORM=HDRSC3
/maps?q=stackoverflow&mkt=en&FORM=HDRSC4
https://stackoverflow.com/
https://stackoverflow.com/questions/
をし、さらにいくつかのこれらの同じ結果が再度発生します。なぜ起こるのか理解しています。複数の検索エンジンで同じ検索を行うと、結果が重複します。私が理解できないことは、混在した結果です。これらは完全なURLです。しかし、他の結果はパスのみを含む。
/images/search?q=stackoverflow&FORM=HDRSC2
/videos/search?q=stackoverflow&FORM=HDRSC3
/maps?q=stackoverflow&mkt=en&FORM=HDRSC4
だから私の質問は2部です:どのように私は結果から重複を取り除くことができ
?
パスの代わりに完全なURLを返すにはどうすればよいですか?
2番目の質問は、私が最も関心を寄せている質問です。必要に応じて、後でBashで重複を除外することができます。
また、このスクリプトのすべての建設的な批判は歓迎します。 :)
(1)セットに結果のリストを変換します。 (2) 'urllib.request.urljoin()'を使います。 – DyZ