首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用urllib2而不是requests抓取谷歌学者

urllib2 是 Python 2 中用于处理 URL 的标准库,而 requests 是一个更现代、更人性化的第三方库,用于发送 HTTP 请求。在 Python 3 中,urllib2 被拆分并重命名为 urllib.requesturllib.error 等模块。以下是使用 urllib.request 抓取谷歌学者页面的基础概念、优势、类型、应用场景以及可能遇到的问题和解决方法。

基础概念

  • HTTP 请求:客户端向服务器发送请求,请求特定的资源。
  • URL:统一资源定位符,用于标识互联网上的资源。
  • urllib.request:Python 标准库中的模块,用于打开和读取 URL。

优势

  1. 标准库:无需额外安装,随 Python 一起提供。
  2. 灵活性:提供了底层的 HTTP 请求控制。

类型

  • GET 请求:获取资源。
  • POST 请求:提交数据到服务器。

应用场景

  • 网页抓取:从网页中提取信息。
  • API 请求:与 RESTful API 进行交互。

示例代码

代码语言:txt
复制
import urllib.request
from urllib.error import HTTPError, URLError

url = 'https://scholar.google.com/scholar?q=python'

try:
    response = urllib.request.urlopen(url)
    html = response.read()
    print(html)
except HTTPError as e:
    print(f'HTTP 错误: {e.code}')
except URLError as e:
    print(f'URL 错误: {e.reason}')

可能遇到的问题及解决方法

1. HTTP 错误

原因:服务器返回了非 200 的状态码。

解决方法:使用 try-except 捕获 HTTPError 并处理。

代码语言:txt
复制
try:
    response = urllib.request.urlopen(url)
except HTTPError as e:
    print(f'HTTP 错误: {e.code}')

2. URL 错误

原因:URL 格式不正确或网络连接问题。

解决方法:使用 try-except 捕获 URLError 并处理。

代码语言:txt
复制
try:
    response = urllib.request.urlopen(url)
except URLError as e:
    print(f'URL 错误: {e.reason}')

3. 反爬虫机制

原因:谷歌学者可能有反爬虫机制,阻止自动化工具访问。

解决方法

  • 设置 User-Agent:模拟浏览器行为。
  • 使用代理:通过代理服务器访问。
代码语言:txt
复制
import urllib.request

url = 'https://scholar.google.com/scholar?q=python'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

req = urllib.request.Request(url, headers=headers)
try:
    response = urllib.request.urlopen(req)
    html = response.read()
    print(html)
except HTTPError as e:
    print(f'HTTP 错误: {e.code}')
except URLError as e:
    print(f'URL 错误: {e.reason}')

总结

使用 urllib.request 可以实现基本的网页抓取功能,但在处理复杂的网络请求时,requests 库通常更为方便和强大。如果遇到反爬虫机制,可以通过设置 User-Agent 或使用代理来解决。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 网络爬虫概述

网络爬虫按照系统结构和实现技术,大致可分为以下集中类型: 通用网络爬虫:就是尽可能大的网络覆盖率,如 搜索引擎(百度、雅虎和谷歌等…)。 聚焦网络爬虫:有目标性,选择性地访问万维网来爬取信息。...其中,在数据抓取方面包括:urllib2(urllib3)、requests、mechanize、selenium、splinter; 其中,urllib2(urllib3)、requests、mechanize...用来获取URL对应的原始响应内容;而selenium、splinter通过加载浏览器驱动,获取浏览器渲染之后的响应内容,模拟程度更高。...考虑效率、当然能使用urllib2(urllib3)、requests、mechanize等解决的尽量不用selenium、splinter,因为后者因需要加载浏览器而导致效率较低。...而正则表达式主要用于提取非结构化的数据。 END

1.3K21

Python入门网络爬虫之精华版

通过指定url,直接返回给用户所需要的数据,而不需要一步步人工去操纵浏览器获取。 转载:宁哥的小站 » Python入门网络爬虫之精华版 抓取 这一步,你要明确要得到的内容是什么?...最基本的抓取 抓取大多数情况属于get请求,即直接从对方服务器上获取数据。 首先,Python中自带urllib及urllib2这两个模块,基本上能满足一般的页面抓取。...分割url和传输数据,多个参数用&连接。...对于反爬虫机制的处理 3.1 使用代理 适用情况:限制IP地址情况,也可解决由于“频繁点击”而需要输入验证码登陆的情况。...Requests,Urllib2都可以使用time库的sleep()函数: import time time.sleep(1) 3.3 伪装成浏览器,或者反“反盗链” 有些网站会检查你是不是真的浏览器访问

1.1K20
  • Python urllib2和urllib的使用

    在Python中有很多库可以用来模拟浏览器发送请求抓取网页,本文中介绍使用urllib2来实现获取网页数据。...其中的user-agent用于说明请求者的身份,是用什么浏览器发的请求,如果没有user-agent则表示不是用浏览器访问的。...三、使用urllib来给url添加查询字符串 在我们使用urllib2获取网页的数据时,肯定不是只获取首页数据,我们还需要获取一些其他页面。...这时候需要在url中拼接查询字符串,Python的urllib库提供了urlencode方法来将字典转换成查询字符串,而urllib2没有urlencode,所以可以通过urllib生成查询字符串来给urllib2...关于通过POST请求腾讯翻译,谷歌翻译,有道翻译,百度翻译等的方法,可以找一些翻译接口破解的文章进行学习。

    1.1K40

    手把手教你利用爬虫爬网页(Python代码)

    将这些URL放入待抓取URL队列。 从待抓取URL队列中读取待抓取队列的URL,解析DNS,并且得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中。...分析已抓取URL队列中的URL,从已下载的网页数据中分析出其他URL,并和已抓取的URL进行比较去重,最后将去重过的URL放入待抓取URL队列,从而进入下一个循环。...比较好的做法是不使用install_opener去更改全局的设置,而只是直接调用opener的open方法代替全局的urlopen方法,修改如下: import urllib2 proxy = urllib2...使用Requests库需要先进行安装,一般有两种安装方式: 使用pip进行安装,安装命令为:pip install requests,不过可能不是最新版。...=postdata) print r.content HTTP中的其他请求方式也可以用Requests来实现,示例如下: r = requests.put(‘http://www.xxxxxx.com/

    2.2K10

    网络爬虫有什么用?怎么爬?手把手教你爬网页(Python代码)

    将这些URL放入待抓取URL队列。 从待抓取URL队列中读取待抓取队列的URL,解析DNS,并且得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中。...分析已抓取URL队列中的URL,从已下载的网页数据中分析出其他URL,并和已抓取的URL进行比较去重,最后将去重过的URL放入待抓取URL队列,从而进入下一个循环。...比较好的做法是不使用install_opener去更改全局的设置,而只是直接调用opener的open方法代替全局的urlopen方法,修改如下: import urllib2 proxy = urllib2...使用Requests库需要先进行安装,一般有两种安装方式: 使用pip进行安装,安装命令为:pip install requests,不过可能不是最新版。...) print r.content HTTP中的其他请求方式也可以用Requests来实现,示例如下: r = requests.put('http://www.xxxxxx.com/put', data

    2.6K30

    Python爬虫入门这一篇就够了

    何谓爬虫 所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本。万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息。...爬虫三要素 抓取 分析 存储 基础的抓取操作 1、urllib 在Python2.x中我们可以通过urllib 或者urllib2 进行网页抓取,但是再Python3.x 移除了urllib2。...+ key + '=' + value1 + '&' + key2 + '=' + value2 2、requests requests库是一个非常实用的HTPP客户端库,是抓取操作最常用的一个库。...Requests库满足很多需求 ?...SlurpDisallow: /User-Agent: *Disallow: / 可以看出淘宝拒绝了百度爬虫、谷歌爬虫、必应爬虫、360爬虫、神马爬虫,搜狗爬虫、雅虎爬虫等约束。

    89410

    Python爬虫入门这一篇就够了「建议收藏」

    何谓爬虫 所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本。万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息。...爬虫三要素 抓取 分析 存储 基础的抓取操作 1、urllib 在Python2.x中我们可以通过urllib 或者urllib2 进行网页抓取,但是再Python3.x 移除了urllib2。...+ key + ‘=’ + value1 + ‘&’ + key2 + ‘=’ + value2 2、requests requests库是一个非常实用的HTPP客户端库,是抓取操作最常用的一个库。...有时候服务器还可能会校验Referer,所以还可能需要设置Referer(用来表示此时的请求是从哪个页面链接过来的) 如下是CSDN中的Request Header中的信息 2、通过IP来限制 当我们用同一个...SlurpDisallow: /User-Agent: *Disallow: / 可以看出淘宝拒绝了百度爬虫、谷歌爬虫、必应爬虫、360爬虫、神马爬虫,搜狗爬虫、雅虎爬虫等约束。

    38710

    干货 | 2020十大Python面试题,你会几个?

    headers,添加headers的数据 使用多个代理ip进行抓取或者设置抓取的频率降低一些, 动态网页的可以使用selenium + phantomjs 进行抓取 对部分数据进行加密的,可以使用selenium...1 urllib 和 urllib2 的区别?...urllib 和urllib2都是接受URL请求的相关模块,但是urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。...urllib提供urlencode()方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。 2 列举网络爬虫所用到的网络数据包,解析包?...网络数据包 urllib、urllib2、requests 解析包 re、xpath、beautiful soup、lxml 3 简述一下爬虫的步骤?

    57410

    浅谈网路爬虫

    爬虫,简单的说就是一个http(https)请求,获取到对面网页的源码,然后从网页的源码中抓取自己需要的信息。而html代码的规则是基于xml的,所以可以通过一定解析规则和逻辑完成我们的数据。...对于python爬虫常用的库有 名称 主要功能 依赖 requests 负责网页请求,代理等处理,封装urllib2(用起来麻烦)等库,使得操作简化。...两种语言的小demo 对于上面的主页,如果用python来完成数据提取 import requests from bs4 import BeautifulSoup url='https://blog.csdn.net...而fiddler是一款强大的抓包工具。通过配置你也可以尝试抓安卓的包,爬去app的数据。至于简单抓包浏览器就可以完成。推荐谷歌浏览器。...3.扎实的语法 因为一个爬虫项目它的数据是有层次的,所以你需要良好的逻辑和编程习惯,抓取这些数据能够清晰的存储而不混乱。并且url遍历也需要深度优先遍历或者广度有限遍历等策略。

    1.2K31

    如何使用爬虫做一个网站

    Scraping and Web Crawling Framework Mechanize:mechanize PyQuery:pyquery: a jquery-like library for python requests...:Requests: HTTP for Humans 下面我们只用python的urllib2和newspaper库来抓取文章: 首先用urllib2将页面抓取下来,打印查看一下...这里是设置默认的编码,一般为utf-8 url='www.example.com' req=urllib2.Request(url) html=urllib2.urlopen(req).read() 可以用print...www.example.com/article3'', ''http://www.exampele.com/article4',] 那么我们就可以使用for循环来获取每一篇文章的url,有了文章的url就好办啦,因为往往我们用urllib2...配置环境没成功,怒而转向我在搬瓦工买的vps,装了centos系统后就方便多了,当然还有python版本的问题,centos6.5默认python版本是python2.6,所以需要升级并设置默认环境和版本

    2.2K50

    爬虫入门(一):轻量级爬虫

    1.爬虫简介 爬虫:一段自动抓取互联网信息的程序 价值:互联网数据,为我所用!...URL集合和已抓取URL集合 防止重复抓取、防止循环抓取 实现方式 1.内存 Python内存 待爬取URL集合:set() 已爬取URL集合:set() 2.关系数据库 MySQL urls...- 1.Python官方基础模块:urllib2 2.第三方包更强大:requests 网页下载器-urllib2 urllib2下载网页方法1:最简洁方法 url->urllib2.urlopen...下载网页方法3:添加特殊情景的处理器 例如: - 某些需要登录信息的网页,可以用 HTTPCookieProcessor - 某些需要代理才能访问的网页,可以用ProxyHandler...- 某些使用了加密协议,可以用HTTPSHandler - 网页URL相互自动跳转关系,使用HTTPRedirectHandler 将这些Handler传送给opener = urllib2

    44710

    Python 学习入门(6)—— 网页爬虫

    1、Python抓取网页 import urllib,urllib2 url = "http://blog.ithomer.net" req = urllib2.Request(url) content...ip 解决:伪装成浏览器进行抓取,加入headers: import urllib,urllib2 headers = { 'Use-Agent':'Mozilla/5.0 (Windows; U;...)可参考:python爬虫抓站的一些技巧总结 1.2、抓取网页中的中文乱码 解决:用BeautifulSoup解析网页,BeautifulSoup是Python的一个用于解析网页的插件,其安装及使用方法下文会单独讨论...requests 3、使用正则表达式分析网页 将网页源码抓取下来后,就需要分析网页,过滤出要用到的字段信息,通常的方法是用正则表达式分析网页,一个例子如下: import re content =...,这时就可以用特殊构造(?

    2.1K20

    这段代码实例,见证了数万人入门编程

    通过接口抓取 http://m.weather.com.cn/data3/city.xml 具体方法见【课程 查天气-4】 抓取城市代码的难度要比查询天气本身难度更高。 3....网络模块 urllib2 教程最初给的方法是基于 Python2 内置的 urllib2 模块,无需安装其他库。...urllib 在 Python3,urllib2 模块被替代,需使用 urllib.request 模块。 requests 这是一个外部的网络模块,需安装。...即使你用原生网络模块完成了代码,也强烈建议体验下 requests。 4. 中文编码 编码一向是 Python 的大坑,这个例子里也不例外。...windows 上如果出现查不到编码的情况,尝试都设置成 gbk,而且建议在 IDE 里新建文件,把内容复制进去,而不是直接使用下载的 city.py。

    69930

    为什么不推荐Selenium写爬虫

    第二步就是去分析这个网站,这个在之前有提到过 采集方案策略之App抓包 : 首先大的地方,我们想抓取某个数据源,我们要知道大概有哪些路径可以获取到数据源,基本上无外乎三种: PC端网站 针对移动设备响应式设计的网站...因为移动App基本都是API很简单,而移动设备访问优化的网站一般来讲都是结构简单清晰的HTML,而PC网站自然是最复杂的了;针对PC端网站和移动网站的做法一样,分析思路可以一起讲,移动App单独分析。...作者真幽默 urllib2 VS requests #!...所以如果你是初学者,那么请毫不犹豫的选择 requests Selenium 最后来到今天的主角 Selenium, 首先看看官方怎么说 What is Selenium?...你有看到哪家公司用Selenium作为生产环境吗? 难。学习Selenium的成本太高,只有我一个人觉得Selenium比Requests难一百倍吗? 我能想到的就这么多了,欢迎各位大佬补充。

    2.2K60

    这里是Python爬虫的起点,抢占资源啦

    httplib/2: 这是一个Python内置http库,但是它是偏于底层的库,一般不直接用。...urllib/urllib2/urllib3: urlliib是一个基于httplib的上层库,而urllib2和urllib3都是第三方库,urllib2相对于urllib增加一些高级功能,如:HTTP...也许官方文档不是最好的入门教程,但绝对是最新、最全的教学文档! 1.首页 requests核心宗旨便是让用户使用方便,间接表达了他们设计优雅的理念。...确定需要爬取的网页 浏览器检查数据来源(静态网页or动态加载) 寻找加载数据url的参数规律(如分页) 代码模拟请求爬取数据 五、爬取某东商品页 以某东商品页为例子带大家学习爬虫的简单流程,为什么以某东下手而不是某宝...你会熟练使用requests库去实现一些简单的爬虫功能就算入门,并不是说需要会各种框架才算是入门,相反能使用低级工具实现功能的才更具潜力!

    59430

    Python爬虫的起点

    httplib/2: 这是一个Python内置http库,但是它是偏于底层的库,一般不直接用。...urllib/urllib2/urllib3: urlliib是一个基于httplib的上层库,而urllib2和urllib3都是第三方库,urllib2相对于urllib增加一些高级功能,如: HTTP...确定需要爬取的网页 浏览器检查数据来源(静态网页or动态加载) 寻找加载数据url的参数规律(如分页) 代码模拟请求爬取数据 五、爬取某东商品页 猪哥就以某东商品页为例子带大家学习爬虫的简单流程,为什么以某东下手而不是某宝...至此我们就完成了某东商品页的爬取,虽然案例简单,代码很少,但是爬虫的流程基本差不多,希望想学爬虫的同学自己动动手实践一把,选择自己喜欢的商品抓取一下,只有自己动手才能真的学到知识!...你会熟练使用requests库去实现一些简单的爬虫功能就算入门,并不是说需要会各种框架才算是入门,相反能使用低级工具实现功能的才更具潜力!

    1K20

    爬虫工程师面试题总结,带你入门Python爬虫

    c、内存池机制 Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。 1>Pymalloc机制。...headers,添加headers的数据 使用多个代理ip进行抓取或者设置抓取的频率降低一些, 动态网页的可以使用selenium + phantomjs 进行抓取 对部分数据进行加密的,可以使用selenium...urllib提供urlencode()方法用来GET查询字符串的产生,而urllib2没有。这是为何urllib常和urllib2一起使用的原因。...10、设计一个基于session登录验证的爬虫方案 11、列举网络爬虫所用到的网络数据包,解析包 网络数据包 urllib、urllib2、requests 解析包 re、xpath、beautiful...; 在做数据查询时,建议用GET方式;而在做数据添加、修改或删除时,建议用POST方式; GET在url中传递数据,数据信息放在请求头中;而POST请求信息放在请求体中进行传递数据; GET传输数据的数据量较小

    1.4K30
    领券