首页 > 编程知识 正文

python3爬虫库,小爬虫

时间:2023-05-04 18:14:18 阅读:50380 作者:2648

urllib2库的基本用法是捕获网页,即从网络流中读取由URL地址指定的网络资源,并在本地保存。 Python有很多用于抓取网页的库。 首先学习urllib2。

urllib2是Python2.7附带的模块。 (不需要下载,导入即可使用。)。

urllib2官方文档: https://docs.python.org/2/library/urllib2. html

urllib2源代码: https://Hg.python.org/cpython/file/2.7/lib/ur lib2. py

urllib2在python3.x上更改为urllib.request

urlopen首先看看代码:

导入#urllib2_urlopen.py#urllib2库import urllib2#,将请求发送到指定的url, 服务器响应的类文件对象response=urllib2. urlopen (返回' http://www.Baidu.conse的read )方法将读取文件的所有内容,并将字符串html=reserse

power @ power MAC~$ : python urllib2_ urlopen.py实际上,在浏览器中打开百度主页,右键单击并选择“显示源代码”,就像刚才打印的一样也就是说,上面的四行代码爬遍了百度首页的所有代码。

与基本url请求相对应的python代码真的很简单。

Request在第一个示例中,urlopen ) )的参数是url地址。

但是,如果需要执行更复杂的操作(如添加HTTP标头),则必须将请求实例创建为urlopen ()的参数。 需要访问的url地址将用作请求实例的参数。

编辑urllib2_request.py

# urllib2_ Request.pyimporturllib2# URL作为request ()方法的参数, request对象request=urllib2. request (生成' http://www.Baidu .并返回;发送到服务器以接收响应的response=urllib2. urlopen (请求除了url参数外,新的request实例还可以设置其他两个参数

DTA (默认空)是与url发送相关的数据(例如要开机自检的数据),同时HTTP请求从“获取”方式更改为“开机自检”方式。

headers (默认空)是一个词典,其中包含要发送的HTTP标头的键-值对。

以下说明这两个参数。

虽然是用户代理,但是这样用urllib2直接向网站发送请求确实有点唐突。 例如,家里有门,以行人身份直接闯入显然是不礼貌的。 此外,一些站点不喜欢程序访问(非人工访问),因此可能会拒绝访问请求。

但是,如果我们以合法身份委托别人的网站,显然人很欢迎,所以我们应该给我们的代码加身份。 就是所谓的用户代理头。

浏览器是指互联网世界公认的身份。 如果我们的爬虫程序想成为真正的用户,我们的第一步就是伪装成公认的浏览器。 在不同的浏览器中发送请求时,有不同的用户代理标头。 urllib2的默认用户代理标头是Python-urlib/x.y。 (x和y是python的主版本和次版本的编号。 例如,python-urllib/2.7 (# urllib2_ user agent.pyimporturllib2URL=' http://www.itcast.cn ' # ie 9.0中的用户代理可以是Windows NT 6.1; 三角/5.0; ' } # url与headers一起发送到IE9.0浏览器的user-agent request=urllib2. request (headers=ua _ header (#将此请求发送到服务器)

要添加/修改特定的header,请调用Request.add_header ()。 要查看现有的header,请调用Request.get_header )。

特定header # urllib2_ headers.pyimporturllib2URL=' http://www.itcast.cn ' # ie 9.0的user-agentheader={'user-ager} MSIE 9.0; Windows NT 6.1; Trident/5.0;' }request=urllib2.request(URL, headers=header ) ) Request.add_header )来添加/修改特定的header request.add _ header (' keep-alive ' ) 也可以显示request.get _ header (header _ name=' connection ' ) header在print response.code #中, 可以查看随机用户代理#在响应状态代码html=response.read () print html中的添加/更改urllib2_ add _ headers.pyimporturlib2iii CrOS i686 2268.111.0 ) .',' Mozilla/5.0 (MAC OS; u; PPC Mac OS X .' Mozilla/5.0(Macintosh; Intel MAC OS . ' ] user _ agent=random.choice (ua _ list ) request=urllib2. request (URL ) ), 也可以通过调用Request.add_header使用特定的header request.add _ header (user-agent ), 将user_agent ) #的第一个字符更改为大写,后面的所有小写request.get_header(user-agent ) ) response=urllib2.urlopen ) req ) html=

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。