解析Google搜索结果的BeautifulSoup脚本停止工作

时间:2011-02-03 14:22:42

标签: python beautifulsoup

我想用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'})]

当我打印内容时,程序返回一个空列表:[]

请,任何人,帮助。

2 个答案:

答案 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>beautifulsouprequests 库来实现。

用于获取 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 工作。