如何使用bs4正确打印Google搜索结果?

丝丽卡

我有一个有效的代码,该代码先打印搜索标题,然后打印URL,但它在网站标题之间打印很多URL。但是如何以这种格式打印它们,并避免每次都将相同的URL打印10次:

1) Title url
2) Title url
and so on... 

我的代码:

search = input("Search:")

page = requests.get(f"https://www.google.com/search?q=" + search)

soup = BeautifulSoup(page.content, "html5lib")

links = soup.findAll("a")

heading_object = soup.find_all('h3')

for info in heading_object:
    x = info.getText()
    print(x)
    for link in links:
        link_href = link.get('href')
        if "url?q=" in link_href:
            y = (link.get('href').split("?q=")[1].split("&sa=U")[0])
            print(y)
简单

如果您分别获得标题和链接,则可以zip()将它们成对分组

for info, link in zip(heading_object, links):
    info = info.getText()

    link = link.get('href')
    if "?q=" in link:
        link = link.split("?q=")[1].split("&sa=U")[0]

    print(info, link)

但是,当页面上不存在某些标题或链接时,这可能会出现问题,因为这样会创建错误的对。它将标题与下一个元素的链接配对。您应该搜索同时保留标题和链接的元素,并在每个元素内搜索单个标题和单个链接以创建对。如果没有标题或链接,则可以放置一些默认值,并且不会创建错误的对。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章