python3爬虫学习笔记

Robot.txt

Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。查看百度的robots协议www.baidu.com/robots.txt

一个简单的爬虫程序

  >>> import urllib.request
  >>> response = urllib.request.urlopen("https://www.baidu.com")  #打开url
  >>> data = response.read().decode(‘utf-8‘)    #读取百度html内容
  >>> print(data)    #打印读取到的html

写内容到本地

>>>filename = urllib.request.urlretrieve("http://edu.51cto.com",filename="D:/2.html")

使用urlretrieve会产出缓存,可以用urlcleanup()清除

>>>urllib.request.urlcleanup()

一般的url标准只允许一部分ASCLL字符,对于不合法的字符(中文,:等)需要编码,使用quote()编码unquote()解码

>>>urllib.request.quote(‘http://www.sina.com‘)
    ‘http%3A//www.sina.com‘
>>>urllib.request.unquote(‘http%3A//www.sina.com‘)
   http://www.sina.com

浏览器模拟--headers属性

很多网站都有反爬虫,这时我们需要模拟浏览器,需要设置User-Agent信息,可以通过在浏览器打开开发者模式在network中查看http请求查找User-Agent信息

方法1:使用build_opener()

>>> url = ‘http://www.baidu.com‘
>>> headers = (‘User-Agent‘,
           ‘ Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) ‘
           ‘AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Mobile Safari/537.36‘)
>>> opener = urllib.request.build_opener()
>>> opener.addheaders = [headers]
>>> data = opener.open(url).read().decode(‘utf-8‘)

方法2:使用add_header()添加报头

使用urllib.request.Request()的add_header()方法,urllib.request.Request()是用来生成请求的,可以修改各种请求头信息

>>> url = ‘http://www.baidu.com‘
>>> req = urllib.request.Request(url)
>>> req.add_header(‘.....‘)
>>> data = urllib.request.urlopen(req).read().decode(‘utf-8‘)

设置超时

urllib.request.urlopen(‘url‘,time_out=?)

>>> try:
>>>     for i in range(2):
>>>         urllib.request.urlopen(‘url‘,timeout=3).read().decode(‘utf-8‘)
>>> except Exception as e:
>>>     print(e)

原文地址:https://www.cnblogs.com/luoyuGG/p/8145065.html

时间: 2024-08-30 11:35:50

python3爬虫学习笔记的相关文章

python网络爬虫学习笔记

python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 介绍: 2. 从简单语句中开始: 3. 传送数据给服务器 4. HTTP头-描述数据的数据 5. 异常 5.0.1. URLError 5.0.2. HTTPError 5.0.3. 处理异常 5.0.4. info和geturl 6. Opener和Handler 7. Basic Authentication 8. 代理 9. Timeout 设置 10. Cookie 11. Deb

python3.x学习笔记2018-02-02更新

前言:python3.x部分学习笔记,有意交流学习者可加wechat:YWNlODAyMzU5MTEzMTQ=.如果笔记内容有错,请指出来. *** 对数据类型的操作 可变数据类型:列表,集合,字典 列表: ``` li=['a','b'] 增: li.insert(2,'c') #在序号2位置上插入'c' li.append('d') #在列表末尾添加'd' li.extend(li2) #在列表li后面添加li2 删: li.remove('c') del li[2] li.pop(3) 改

python3.5学习笔记--一个简单的图片爬虫

参考资料:http://v.qq.com/boke/page/q/g/t/q01713cvdgt.html 目的:爬取网站图片 实际上以上链接的视频中已经将整个过程说的非常明白了,稍微有点计算机基础的人想来都不难实现. 所以,废话不多说,直接粘我写的脚本了事,有问题看视频即可. #################################################################3 import os,requests,urllib.requestfrom bs4 i

Python3爬虫学习

学了几天python3,发现目前学到的与爬虫还是关系不大,所以现在准备爬虫和语言同步学习. 2016.8.9晚 先从最简单的开始,爬取指定url的所有内容: #encoding:UTF-8 import urllib.request url = "http://www.selflink.cn/selflink" data = urllib.request.urlopen(url).read() data = data.decode('UTF-8') print(data) #encod

python3 爬虫学习-根据关键词爬取百度百科内容

小白编了好久才写出来,记录一下免得之后再用的时候都忘了还得重新学~ 学习爬虫最开始是学习了慕课上的python课程,然后学习了慕课和网易云上的爬虫教程.这两个自己去查一下就好了~ 开始还比较费劲,毕竟熟悉需要时间么,而且python也不太熟悉. 关于python版本:我一开始看很多资料说python2比较好,因为很多库还不支持3,但是使用到现在为止觉得还是pythin3比较好用,因为编码什么的问题,觉得2还是没有3方便.而且在网上找到的2中的一些资料稍微改一下也还是可以用. 好了,开始说爬百度百

python3.X学习笔记(week1)老男孩20160114

学习背景: 我在西藏拉萨出差已经连续将近2个月了,实时想到会精通一门编程语言并编写出自己想要的程序是我多年的梦想,一定找时间实现,回想高中时,自己对编程的兴趣十分浓厚,父母给自己购买了学习机插卡式的,只能敲basic代码,同时学校有计算机课,经常和老师讨论编程问题,时光一晃20多年过去了,编程放下了,但是我的梦想没有放下,正好看到老男孩在51cto网站上开设网络培训PYTHON语言学习班,我犹豫了怕在高原坚持不下来,后来想早报名早学习,不能再耽误下去了,我毅然报了名,花了5000多money,自

[爬虫学习笔记]C#基于ARSoft.Tools.Net的DNS解析模块(半成品)

      最近在做爬虫的作业,今天学习的内容是关于DNS解析模块的制作的.使用的库为ARSoft.Tools.Net,它是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID validation以及DNS Client.DNS Server接口.使用该接口可轻松实现DNS客户请求端及服务器解析端.项目地址:http://arsofttoolsnet.codeplex.com/,Nuget包地址:https://www.nuget.org/packag

python 网络爬虫学习笔记(一)

为了方便,在Windows下我用了PyCharm,个人感觉这是一款优秀的python学习软件.爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来. 学习python爬虫前,先学习下其他的一些知识: (一)url URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一的URL,

爬虫学习笔记

爬虫模拟浏览器实例: 方法一.使用build_opener()修改报头 #!/usr/bin/env python # -*-coding:utf-8-*- # __author__="life" import urllib.request url = 'http://blog.csdn.net/justloveyou_/article/details/69611328' # file = urllib.request.urlopen(url) headers = ("Use