如何使用Google自定义搜索API和Python检查URL是否被谷歌索引?

0 投票
2 回答
3231 浏览
提问于 2025-04-18 01:43

我需要用一个Python脚本和谷歌自定义搜索来检查一些网址是否被谷歌收录。
我想在脚本中得到的结果,和我在浏览器中搜索“site:www.example.it”时得到的结果是一样的。
我的代码是:

import urllib2
import json
import pprint
data = urllib2.urlopen('https://www.googleapis.com/customsearch/v1?key=AIzaSyA3xNw1doOc4rjoUGc7sq1gltQvOgalHqA&cx=017576662512468239146:omuauf_lfve&q=site:http://www.repubblica.it/politica/2014/04/07/news/governo_e_patto_su_italicum_brunetta_a_renzi_riforma_elettorale_entro_pasqua_o_si_dimetta-82947958/?ref=HREA-1')
data=json.load(data)
print data

这个代码的输出是:

{   u'kind': u'customsearch#search',
u'queries': {   u'request': [   {   u'count': 10,
                                    u'cx': u'017576662512468239146:omuauf_lfve',
                                    u'inputEncoding': u'utf8',
                                    u'outputEncoding': u'utf8',
                                    u'safe': u'off',
                                    u'searchTerms': u'site:http://www.repubblica.it/politica/2014/04/07/news/governo_e_patto_su_italicum_brunetta_a_renzi_riforma_elettorale_entro_pasqua_o_si_dimetta-82947958/?ref=HREA-1',
                                    u'title': u'Google Custom Search - site:http://www.repubblica.it/politica/2014/04/07/news/governo_e_patto_su_italicum_brunetta_a_renzi_riforma_elettorale_entro_pasqua_o_si_dimetta-82947958/?ref=HREA-1',
                                    u'totalResults': u'0'}]},
u'searchInformation': {   u'formattedSearchTime': u'0.55',
                          u'formattedTotalResults': u'0',
                          u'searchTime': 0.552849,
                          u'totalResults': u'0'},
u'url': {   u'template': u'https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&cref={cref?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json',
            u'type': u'application/json'}}

你可以看到没有“项目”,而如果你在谷歌上搜索这个网址:http://www.repubblica.it/politica/2014/04/07/news/governo_e_patto_su_italicum_brunetta_a_renzi_riforma_elettorale_entro_pasqua_o_si_dimetta-82947958/?ref=HREA-1,你至少能看到一个项目。

经过多次实验,似乎谷歌自定义搜索对“site:网站”的查询没有效果。

你知道有什么解决方案或替代方法吗?
谢谢。

2 个回答

-1

网址在Excel文件里

import requests
import pandas as pd
import time
from bs4 import BeautifulSoup
from urllib.parse import urlencode

seconds = 3
proxies = {
    'https' : 'https://localhost:8123',
    'http' : 'http://localhost:8123'
    }

user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'
headers = { 'User-Agent' : user_agent}

df = pd.read_excel('url_links.xlsx')
for i in range(0, len(df)):
    line = df.loc[i,'links']
    #print(line)
    if line:
        query = {'q': 'site:' + line}
        google = "https://www.google.com/search?" + urlencode(query)
        data = requests.get(google, headers=headers)
        data.encoding = 'ISO-8859-1'
        soup = BeautifulSoup(str(data.content), "html.parser")
        try:
            check = soup.find(id="rso").find("div").find("div").find("div").find("div").find("div").find("a")["href"]
            print("URL is Index ")
        except AttributeError:
            print("URL Not Index")
        time.sleep(float(seconds))
    else:
        print("Invalid Url")
0

使用谷歌自定义搜索引擎(CSE)时,你需要在CSE的设置中指定要搜索的网站,这个设置对应于你的'cx'参数,而不是通过'site:'这个查询参数来指定。在你的CSE的'基本设置'标签下,你应该能看到一个叫“要搜索的网站”的部分。

撰写回答