当前位置: 首页 > 面试题库 >

f'https://google.com/search?q = {query}'中的soup.select('。r a')带回PythonBeautifulSoup中的空列表。**不重复**

孔和风
2023-03-14
问题内容

“我很幸运!” 电子书“使用Python自动处理无聊的东西”中的项目不再适用于他提供的代码。

具体来说,linkElems = soup.select(’。r a’)

我已经尝试使用提供的解决方案: “ https://www.google.com/#q=vigilante+mic”中的soup.select('。r
a’)在pythonBeautifulSoup中提供了空列表

,而我目前正在使用相同的搜索格式。

import webbrowser, requests, bs4

def im_feeling_lucky():

    # Make search query look like Google's
    search = '+'.join(input('Search Google: ').split(" "))

    # Pull html from Google
    print('Googling...') # display text while downloading the Google page
    res = requests.get(f'https://google.com/search?q={search}&oq={search}')
    res.raise_for_status()

    # Retrieve top search result link
    soup = bs4.BeautifulSoup(res.text, features='lxml')


    # Open a browser tab for each result.
    linkElems = soup.select('.r')  # Returns empty list
    numOpen = min(5, len(linkElems))
    print('Before for loop')
    for i in range(numOpen):
        webbrowser.open(f'http://google.com{linkElems[i].get("href")}')

linkElems变量返回一个空列表[],程序不执行任何操作。


问题答案:

我在读那本书时也遇到了同样的问题,并找到了解决该问题的方法。

更换

soup.select('.r a')

soup.select('div#main > div > div > div > a')

将解决这个问题

以下是将起作用的代码

import webbrowser, requests, bs4 , sys

print('Googling...')
res = requests.get('https://google.com/search?q=' + ' '.join(sys.argv[1:]))
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text)

linkElems = soup.select('div#main > div > div > div > a')  
numOpen = min(5, len(linkElems))
for i in range(numOpen):
    webbrowser.open('http://google.com' + linkElems[i].get("href"))

上面的代码从命令行参数获取输入



 类似资料:
  • 几天来,我一直在为一个命名查询苦苦挣扎。命名查询具有与第二个表的内部联接。另一个复杂性是,第二个表上的主键是复合键。我在这里简化了两张表: 主键是nameIdx 复合主键位于nameIdx和nameType上 我试图在JPQL中模拟以下sql查询: 此查询在Oracle中按预期工作,返回许多记录。Java我有这些JPA实体: 和 还有一个主键类ANameRolePK 使用此设置,包括在上面的ANa

  • 昨天我的Nexus5收到了从到版本的更新。此后,扫描设备中可用网络的动作停止接收列表,在这种情况下,结果列表的大小为0,即使在Wifi系统设置中列出了10+个Wifi网络。 这方面的代码通常是:注册并在接收器中等待事件,如下所示: 我在API的变化主题中搜索了关于这个的内容,但是我没有看到这个功能有什么突破性的变化。 有人注意到了吗?是API中的新内容还是仅有的个别情况?

  • 问题内容: 加入列表: join 必须采取迭代。 显然,join的论点是,这是一个列表理解。 看这个: 现在,join的参数为,但结果相同。 为什么?是否str还会产生列表或可迭代项? 问题答案: 这称为生成器表达式,并在PEP 289中进行了说明。 生成器表达式和列表理解之间的主要区别在于前者不在内存中创建列表。 请注意,还有第三种编写表达式的方法:

  • 问题内容: 我在为elasticsearch实现自动完成功能时遇到问题,这是我的 设置: 创建自动完成的分析器 然后,使用“ alias” 属性中的分析器在自动完成中创建一个类型: Afterwards; add a document: When I run the following: result is and But I should be getting my document for i

  • 我在Python中进行多元线性回归,但由于某种原因,系数没有正确返回为列表。相反,将返回列表中的列表: 这将返回列表[]的列表中的值,而不是列表[]。知道为什么会这样吗?输出: 但这行得通: 输出: