我想用Python解析Google搜索结果。一切都很完美,但现在我不断得到一个空列表。以下是以前工作正常的代码:
query = urllib.urlencode({'q': self.Tagsinput.GetValue()+footprint,'ie': 'utf-8', 'num':searchresults, 'start': '100'})
result = url + query1
myopener = MyOpener()
page = myopener.open(result)
xss = page.read()
soup = BeautifulSoup.BeautifulSoup(xss)
contents = [x['href'] for x in soup.findAll('a', attrs={'class':'l'})]
这个脚本在12月完美运行,现在它停止了工作。
据我所知,问题出现在这一行:
contents = [x['href'] for x in soup.findAll('a', attrs={'class':'l'})]
当我打印内容时,程序返回一个空列表:[]
请,任何人,帮助。
答案 0 :(得分:4)
The API工作得更好。简单的JSON,您可以轻松地解析和操作。
import urllib, json
BASE_URL = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&'
url = BASE_URL + urllib.urlencode({'q' : SearchTerm.encode('utf-8')})
raw_res = urllib.urlopen(url).read()
results = json.loads(raw_res)
hit1 = results['responseData']['results'][0]
prettyresult = ' - '.join((urllib.unquote(hit1['url']), hit1['titleNoFormatting']))
答案 1 :(得分:0)
在撰写此答案时,您无需解析 cat val scaled
0 1 10 1
1 1 4 0
2 2 6 0.4
3 2 2 0
4 1 8 0.667
5 2 12 1
标记(大部分)即可从 Google 搜索中获取输出。这可以通过使用 <script>
、beautifulsoup
和 requests
库来实现。
用于获取 online IDE 中的标题、链接和示例的代码:
lxml
或者,您也可以使用 SerpApi 中的 Google Search Engine Results API 来实现。这是一个付费 API,可免费试用 5,000 次搜索。查看Playground。
要集成的代码:
import requests, lxml
from bs4 import BeautifulSoup
headers = {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3538.102 Safari/537.36 Edge/18.19582"
}
html = requests.get(f'https://www.google.com/search?q=minecraft', headers=headers).text
soup = BeautifulSoup(html, 'lxml')
for container in soup.findAll('div', class_='tF2Cxc'):
title = container.select_one('.DKV0Md').text
link = container.find('a')['href']
print(f'{title}\n{link}')
# part of the output:
'''
Minecraft Official Site | Minecraft
https://www.minecraft.net/en-us/
Minecraft Classic
https://classic.minecraft.net/
'''
<块引用>
免责声明,我为 SerpApi 工作。