如何在不使用任何yahoo api的情况下使用Python对雅虎搜索引擎进行基本查询?

时间:2012-05-12 08:31:31

标签: python

我想使用Beautiful Soup和urllib从python脚本对yahoo搜索引擎进行基本查询。我为谷歌做了同样的事情,这很容易,但雅虎证明有点困难。对雅虎搜索引擎的查询的最小示例脚本将有所帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

首先,避免使用urllib - 使用requests,这是一个更加理智的界面。

然后,返回页面中的所有链接都包含类yschttl以及方案link-1link-2之后的ID,依此类推。你可以用美味的汤:

import requests
from bs4 import BeautifulSoup
url = "http://search.yahoo.com/search?p=%s"
query = "python"
r = requests.get(url % query) 
soup = BeautifulSoup(r.text)
soup.find_all(attrs={"class": "yschttl"})

for link in soup.find_all(attrs={"class": "yschttl"}):
    print "%s (%s)" %(link.text, link.get('href'))

给我们

Python Programming Language – Official Website (http://www.python.org/)
Python - Image Results (http://images.search.yahoo.com/search/images?_adv_prop=image&va=python)
Python (programming language) - Wikipedia, the free encyclopedia (http://en.wikipedia.org/wiki/Python_(programming_language))

等等。

答案 1 :(得分:0)

修改 Manuel 的代码以使其工作:

url = "http://api.search.yahoo.com/search?p=%s"
query = 'Python'
r = requests.get(url % query) 
soup = BeautifulSoup(r.text, features = "lxml")
soup.find_all(attrs={"class": "fz-ms lh-1_43x"})

for link in soup.find_all(attrs={"class": "fz-ms lh-1_43x"}):
    print(link.text)
    # print(link.text, link.get('href'))
    print('---------------------------------------------------')