我试图从百度获取搜索结果。 但现在我被困在这里:
import sys
import urllib
import urllib2
from bs4 import BeautifulSoup
question_word = "Hello"
url = "http://www.baidu.com/s?wd=" + urllib.quote(question_word.decode(sys.stdin.encoding).encode('gbk'))
htmlpage = urllib2.urlopen(url).read()
soup = BeautifulSoup(htmlpage)
for child in soup.findAll("h3", {"class": "t"}):
print child.contents[0]
这将返回具有目标网址的所有标记。 我不知道如何使用.get(' href')列出实际网址
我是Python的新手,因此可能会对基本概念产生一些困惑。 我非常感谢你的帮助。
谢谢!
答案 0 :(得分:4)
for child in soup.findAll("h3", {"class": "t"}):
print child.a.get('href')
使用.
获取a
代码中的下一个h3
代码,然后您可以使用.get()
答案 1 :(得分:1)
有一些选项可以获取 href
,这里有两个选项:.a.get('href')
或 .a['href']
您还可以使用 SelectorGadget 来获取 CSS
选择器并使用 select()
或 select_one()
方法来查找您要查找的内容并使用 {{1 }}。
代码和full example:
for loop
输出:
from bs4 import BeautifulSoup
import requests
import lxml
headers = {
"User-Agent":
"Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.105 Mobile Safari/537.36 EdgA/46.1.2.5140"
}
response = requests.get('https://www.baidu.com/s?tn=baidu&wd=lasagna', headers=headers).text
soup = BeautifulSoup(response, 'lxml')
for link in soup.select('.result .t a'):
links = link['href']
print(links)
或者,您可以使用来自 SerpApi 的 Baidu Organic Results API。 这是一个免费试用的付费 API。
要集成的代码:
http://www.baidu.com/link?url=HsRYa1X1Me8F9GY13KcqBcfFuLv1ST0OgGrTV-czCKVjRFlnzBIkhefpxX7Qy5a1vmfDn2sfZm_oJ9MB5dsthKQp8-oUt5QAQWjtTepQ46O
http://www.baidu.com/link?url=BShcWZT386OcLGiTRZZvHVYxk3c5RJg8xP7NmWyzzelEgMi4Udwsmkn_0HKwm3bAYwD4vijoRAAsPkfU03Gvv_
http://www.baidu.com/link?url=YYtyQWUvIzNvsul5yxH16yYtuvgQG7otyqUlc218FmFKR3It4jnLn69Iuk8h9wAx
http://www.baidu.com/link?url=l-_isPDZWm36Hu8otKlJYz6PM80wnr8gEXS9NcuQ-lj7xIWrIBCW6-s8J-ovtiZZeUqosqAOOMpSlclq2CHN7_
http://www.baidu.com/link?url=86Rh7aSzzMlVz6Upzra57OKMc4sMZkTgECNk9IQi493D6jDqtNYSSaYNHDSeXZ40zpU29RxRvq6W7xm4O8FNVq
http://www.baidu.com/link?url=91g1S6LBPAA3sXIU3b-OSsbNVYvBUS6iD6FzAoTdNS_NBQn1L5uHvvo8X8RialUm
http://www.baidu.com/link?url=wkVK0QjvpTMNxQuvIy--P8BHeW8oeSkBizDxP2JDtWcT4AZ5DCYd-DDLjWBwQ7Lj
输出:
import os
from serpapi import GoogleSearch
params = {
"engine": "baidu",
"q": "(意大利)千层面",
"api_key": os.getenv("API_KEY"),
}
search = GoogleSearch(params)
results = search.get_dict()
for organic_result in results["organic_results"]:
if 'link' in organic_result:
print(f"Link: {organic_result['link']}")
<块引用>
免责声明,我为 SerpApi 工作。