【发布时间】:2021-06-03 05:11:58
【问题描述】:
我有一个工作代码,它首先打印搜索标题,然后打印 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)
【问题讨论】:
-
我不希望这仅适用于 beautifilsoup 和简单的 get 请求,因为 google 使用 JS 呈现了很多页面。你可能想看看Search API。
-
代码为:heading_object 中的信息:x = info.getText() 链接中的链接:link_href = link.get('href') if "url?q=" in link_href: y = (link.get('href').split("?q=")[1].split("&sa=U")[0]) print(x, y) 给我需要的结果,但打印出来的除外来自 Google 的每个结果大约有 10 个副本。
-
始终将代码、数据和完整的错误消息作为文本(不是截图,不是链接)放在有问题的地方(不是评论)。
-
您应该以不同的方式搜索它 - 首先找到同时保留
title和url的对象,然后在此对象中搜索单个title和url以将其作为对。最终你应该使用zip(heading_object, links)来创建对,但如果页面上的某些项目(标题或链接)为空,它可能会给出错误的结果,因为它会将其他项目移动到这个地方。 -
我编辑了代码。问题是它会打印出在 Google 搜索页面上找到的所有 url。
标签: python beautifulsoup request