谷歌学者用验证码拦截python scrapy

谷歌学者用验证码拦截python scrapy,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我正在调试一个简短的脚本,以便从论文列表中获取引用计数和摘要。调试时,我遇到了一个验证码块。但是,我最多每4-5分钟执行一次脚本。下面是一个重现我的问题的最小工作示例: from scrapy.crawler import CrawlerProcess import re class ResArt_Spider(scrapy.Spider): name = "restart_spider" def start_requests(self):

我正在调试一个简短的脚本,以便从论文列表中获取引用计数和摘要。调试时,我遇到了一个验证码块。但是,我最多每4-5分钟执行一次脚本。下面是一个重现我的问题的最小工作示例:

from scrapy.crawler import CrawlerProcess
import re

class ResArt_Spider(scrapy.Spider):
    name = "restart_spider"

    def start_requests(self):
        url_start = "https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=GHG+emission+pathways+until+2300+for+the+1.5%C2%B0C+temperature+rise+target+and+the+mitigation+costs+achieving+the+pathways&btnG="
        yield scrapy.Request(url = url_start, callback = self.parse_metrics)

    def parse_metrics(self, response):
        # scrape to extract abstract and citations
        citation_block = response.css('body > div#gs_top > div#gs_bdy ::text').extract()
        print(citation_block)

if __name__ == "__main__":
    getArt = CrawlerProcess()
    getArt.crawl(ResArt_Spider)
    getArt.start()
有一段时间,我可以得到一个列表,并在列表中搜索引文和摘要。我这样做是为了最大限度地减少google scholar上的请求,尽管我只是每4-5分钟调试一次并发出请求。所以我每节课只拿回一件东西

以下是对scrapy调用的响应的截断版本:

2020-11-02 14:13:02 [scrapy.utils.log] INFO: Scrapy 1.5.0 started (bot: scrapybot)
2020-11-02 14:13:02 [scrapy.utils.log] INFO: Versions: ... Python 3.6.2 |Anaconda ...
2020-11-02 14:13:02 [scrapy.crawler] INFO: Overridden settings: {}
2020-11-02 14:13:02 [scrapy.middleware] INFO: Enabled extensions:
...
2020-11-02 14:13:02 [scrapy.middleware] INFO: Enabled downloader middlewares:
...
2020-11-02 14:13:02 [scrapy.middleware] INFO: Enabled spider middlewares:
...
2020-11-02 14:13:02 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2020-11-02 14:13:02 [scrapy.core.engine] INFO: Spider opened
2020-11-02 14:13:02 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2020-11-02 14:13:02 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2020-11-02 14:13:03 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://scholar.google.com/scholar?
hl=en&as_sdt=0%2C5&q=GHG+emission+pathways+until+2300+for+the+1.5%C2%B0C+temperature+rise+target+and+
the+mitigation+costs+achieving+the+pathways&btnG=> (referer: None)
['#gs_captcha_ccl{max-width:680px;margin:21px 0;}.gs_el_sm #gs_captcha_ccl{margin:13px 0;}
#gs_captcha_ccl h1{font-size:16px;line-height:24px;font-weight:normal;padding:0 0 16px 0;}',
'function gs_captcha_cb(){grecaptcha.render("gs_captcha_c",
{"sitekey":"6LfFDwUTAAAAAIyC8IeC3aGLqVpvrB6ZpkfmAibj","callback":function()
{document.getElementById("gs_captcha_f").submit()}});};', "Please show you're not a robot", 
"Sorry, we can't verify that you're not a robot when JavaScript is turned off.", 'Please ', 
'enable JavaScript', ' in your browser and reload this page.']
2020-11-02 14:13:03 [scrapy.core.engine] INFO: Closing spider (finished)
2020-11-02 14:13:03 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
...
2020-11-0214:13:02[scrapy.utils.log]信息:scrapy 1.5.0已启动(bot:scrapybot)
2020-11-0214:13:02[scrapy.utils.log]信息:版本:。。。Python 3.6.2 |蟒蛇。。。
2020-11-02 14:13:02[scrapy.crawler]信息:覆盖的设置:{}
2020-11-02 14:13:02[scrapy.middleware]信息:启用的扩展:
...
2020-11-02 14:13:02[scrapy.middleware]信息:启用的下载程序中间件:
...
2020-11-02 14:13:02[scrapy.middleware]信息:启用的蜘蛛中间件:
...
2020-11-02 14:13:02[scrapy.middleware]信息:启用的项目管道:
[]
2020-11-02 14:13:02[刮屑.堆芯.发动机]信息:十字轴已打开
2020-11-02 14:13:02[scrapy.extensions.logstats]信息:抓取0页(以0页/分钟的速度),抓取0项(以0项/分钟的速度)
2020-11-02 14:13:02[scrapy.extensions.telnet]调试:telnet控制台监听127.0.0.1:6023
2020-11-02 14:13:03[刮屑核心引擎]调试:爬网(200)(参考:无)
['#gs#U captcha_ccl{最大宽度:680px;边距:21px 0;}.gs#el#U sm#gs#U captcha_ccl{边距:13px 0;}
#gs_captcha_ccl h1{字体大小:16px;行高:24px;字体重量:正常;填充:0 0 16px 0;}',
'函数gs_captcha_cb(){grecaptcha.render(“gs_captcha_c”,
{“sitekey”:“6LfFDwUTAAAAAIyC8IeC3aGLqVpvrB6ZpkfmAibj”,“callback”:函数()
{document.getElementById(“gs_captcha_f”).submit()}};};,“请表明你不是机器人”,
“抱歉,当JavaScript关闭时,我们无法验证您不是机器人。”,“请”,
“启用浏览器中的”“JavaScript”“,然后重新加载此页面。”]
2020-11-02 14:13:03[刮屑堆芯发动机]信息:关闭卡盘(已完成)
2020-11-02 14:13:03[斯拉比统计局]信息:倾销斯拉比统计数据:
...
我将
[scrapy.core.engine]DEBUG:Crawled(200)
和返回的列表换行,这样它们都更容易阅读

问题:

  • 获取不同的
    站点密钥是否可以解决此问题?如果是的话,我该怎么办
  • 他们在scrapy或者scrapy的插件中有什么方法可以解决这个问题吗?我找不到任何特别提到能够解决这个问题的方法
  • 除了联系谷歌,还有其他建议吗。我联系了谷歌学者帮助,正在等待他们的回复
相关(但没有帮助),因此问答:

  • 。他们收到了违反服务条款的警告。我没有。另外,他们使用的是urllib,而不是scrapy
  • 。9年半前,答案是:没有学者。谷歌API。从那以后有什么新的发展吗
  • 提供指向google scholar解析器的链接,但它不获取摘要,只获取引用计数

尝试使用
谷歌缓存
参考程序

另外,请注意每秒发送的请求不要超过2个。您可能会被阻止:

headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" ,'referer':'https://www.google.com/'}

请遵守TOS中的规则

我写了一个程序来下载大量的搜索结果,但是你阻止了我的电脑访问Google Scholar。你能提高限额吗

呃,不,当您使用自动软件访问Google Scholar时,请尊重我们的robots.txt。作为“爬虫鞋”和“站长帽”的穿着者,我们不能推荐对网络标准的遵守程度足够高

robots.txt文件位于,当前包含:

User-agent: *
Disallow: /search
Disallow: /index.html
Disallow: /scholar
Disallow: /citations?
Allow: /citations?user=
Disallow: /citations?*cstart=
Disallow: /citations?user=*%40
Disallow: /citations?user=*@
Allow: /citations?view_op=list_classic_articles
Allow: /citations?view_op=metrics_intro
Allow: /citations?view_op=new_profile
Allow: /citations?view_op=sitemap
Allow: /citations?view_op=top_venues

User-agent: Twitterbot
Disallow:

User-agent: facebookexternalhit
Disallow:

你没有回答这个问题。相反,你抛出了几个红鲱鱼:我提出了一个请求,而不是“大量下载”。我的请求每4-5分钟一次:比人慢。事实上,你自己的帖子证实了我有能力做我想做的事情。您的帖子中有这样一句话:“当您使用自动软件访问Google Scholar时。”为了不让您感到困惑,这是一个独特的请求,在调试时每4-5分钟发出一次。谢谢,
标题是在脚本中,还是在bash脚本之外?