python爬虫实战

我发觉看视频学习写代码  真的是个很难坚持的事情。一味地怪自己老走神,不如怪这种学习方法的不科学。

笔记 代码 都是老师给写好,全程毫无参与感,怎么可能学的好,所以要自己写笔记。

(一)python爬虫分类和robots协议

1.爬虫的分类

通用爬虫 :

常见的就是搜索引擎。

无差别的收集数据,存储,提取关键字,构建索引库,给用户提供搜索接口。

爬取一般流程:

聚焦爬虫:

2.Robots协议

很多网站都对应一个robots协议,告诉你哪些内容可以爬取,哪些内容不可以。

(二)python爬虫urllib使用和进阶。

1.HTTp请求和响应处理。

爬虫其实就是通过HTTp协议访问网页,模拟人的行为,利用程序去获得数据。

urllib包:

(1)urllib.request用于打开和读写url

(2)urllib.error包含了由urllib.request引起的异常

(3)urllib.parse用于解析url

(4)

urllib.request模块:

urlopen方法:

打开一个url,可以是一个string,也可以是个request对象.

urlopen(url,data,timeout)返回一个response,类文件对象(类文件对象会对应一些方法,可以测试看看是否支持)

类文件对象 肯定支持上下文管理,会有两个很重要的模式方法,anter,acdent。

data为none的话,发起get请求。如果data不为空的话,发起的是post方法。

可以分别打印出response的多种属性值,其中read是返回的内容,我们比较在意这个结果。

 但是urlopen方法只能传递url和data这样的数据,不能构造http中的请求,例如useragent。

源码中的useragent如下,很容易暴露自己是爬虫。

#urllib.request.openerDirector

class openerDirector:

     def __init__(self):

          client__version = 省略。。。

          self.addheaders = ...

把自己进行伪装,不被查别出自己是爬虫程序。可以查看浏览器中的ueragent,将其复制出来,作为自己的useragent,这样网站就无法识别是否是爬虫程序,但是我们发现urlopen没有这样的参数可以让我们放置ueragent,但是request中有,那么我们利用request中的第三个参数,来设计useragent。

 (三)python爬虫URL编码和GET、POST请求

对于get方法,把参数拼接在URL里面。

url = ‘http://www.magedu.com/python?id=1&name=tom’

对于post方法,单独新增一个body

--------------------------------------------------------------------------

from urllib import parse

d= {

  'id':1,

 'name':'tom',

'url':'http://www.magedu.com/python?id=1&name=tom'

}

u=parse.urlencode(d)

print(u)

---------------------------------------------------------------------------

打印出来的东西,

id=1&name=tom&url=http%...................所有的东西都被转写。。

原文地址:https://www.cnblogs.com/maowuyu-xb/p/11202888.html