如何修复打开网络浏览器的代码?

时间:2019-06-30 14:23:07

标签: python web-scraping

我是Python的新手,正在尝试学习这种精彩的Webbscraping语言。

我写了一个非常简单的程序来学习如何使用请求模块和BeautifulSoup模块。

该程序应该在新窗口中打开google搜索的前五个结果。搜索的关键词被写为参数。

# lucky.py - Opens several Google search results.

import webbrowser, bs4, requests, sys

print('Googling...') # display text while downloading the Google page
res = requests.get('http://google.com/search?q=' + ' '.join(sys.argv[1:]))
res.raise_for_status()

# Retrieve top search result links.
soup = bs4.BeautifulSoup(res.text, "lxml")

# Open a browser tab for each result
link_elems = soup.select('.r a')
num_open = min(5, len(linkElems))
for i in range(num_open):
    webbrowser.open('http://google.com' + link_elems[i].get('href'))

当我在终端中启动程序时,它会显示一个终端窗口,显示文本“ Googling ...”,但它将关闭,并且不会打开任何Web浏览器窗口。

为解决此问题,我尝试将urllib.request与urllib.request.urlopen('http://google.com/search?q=' + ' '.join(sys.argv[1:])).read()

一起使用

我还添加了lxlm:soup = bs4.BeautifulSoup(res.text, "lxml"),因为建议使用它。

程序仍然无法正常工作,我有点困惑... 我在Miscrosoft Windows操作系统上运行它。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

替换以下行-

  

webbrowser.open('http://google.com'+ link_elems [i] .get('href'))

使用这两行代码-

  

chrome_path ='C:/程序文件   (x86)/Google/Chrome/Application/chrome.exe%s'   webbrowser.get(chrome_path).open('http://google.com'+   link_elems [i] .get('href'))

如果这不起作用,请尝试向webbrowser.get提供“ new”参数-

  

webbrowser.open(url,new = 2)

如果提供“ 1”,则在新窗口中打开网页;如果提供2,则在新选项卡中,打开新页面。