谷歌学者用验证码拦截python scrapy
我正在调试一个简短的脚本,以便从论文列表中获取引用计数和摘要。调试时,我遇到了一个验证码块。但是,我最多每4-5分钟执行一次脚本。下面是一个重现我的问题的最小工作示例:谷歌学者用验证码拦截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):
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脚本之外?