Python爬虫入门和一个轻量级实例

爬虫简介

  1. 爬虫简介:一段自动抓取互联网信息的程序
    在这里插入图片描述
    取代人工从浏览器访问,从一个url出发,访问所有的url,并从中获取有价值的数据

  2. 爬虫有什么用?
    举个栗子:我可以把网上各个网站最漂亮的美女图片爬取出来,然后做一个最漂亮最全面的美女图片网

简单的爬虫架构

  • 爬虫包含了哪些模块,这些模块怎么组装在一起,完成一个爬取任务
    在这里插入图片描述
    url管理器将url传送给网页下载器,网页解析器将下载的网页进行解析,然后做两个工作:
  1. 把解析出来的新的url回传给url管理器,继续循环做刚刚的流程
  2. 将有价值的数据提取出来
    爬虫并不是将我们需要的数据爬取下载,而是将整个网页下载下来,在进行解析和提取,理解这点对我们后面的学习很有帮助

架构中的三大模块

url管理器

url管理器将url传送给网页下载器,防止重复抓取和循环抓取

网页下载器

将互联网上url对应的网页下载到本地的工具,这里用 urllib.request
urllib.request:(在python2中叫urllib2)

**> import urllib.request

#用一个字典保存header(模拟Mozilla浏览器)这个信息在浏览器上是可以查到的,有兴趣的可以自己去查资料看一看

headers={ “User-Agent”: " Mozilla/5.0 (Windows NT 6.1; Win64; x64)" }
#用Request方法把url和headers组合一起构造一个请求
#Request原型为Request(url,data,headers),这里是get请求,不需要post data,所以没有第二个参数data,所以指定headers=headers,告诉函数没有data参数
request =urllib.request.Request(url,headers=headers)
#用urlopen方法发送这个request请求,将返回值放入
response response = urllib.request.urlopen(request)
#将网页内容给html html = response.read()
#(当然还有别的方法,这个是稳定性相对较高,也比较容易理解的一种方法)**

import urllib.request    #导包

url = "http://www.baidu.com"
headers = {
   "User-Agent": " Mozilla/5.0 (Windows NT 6.1; Win64; x64)"}   #伪装浏览器
request = urllib.request.Request(url,headers = headers)     #通过Request创建request对象
response = urllib.request.urlopen(request)  #通过urlopen创建response对象
html = response.read()  #保存网页内容
print(len(html))    #输出网页的html的长度

网页解析器

四种网页解析器

  1. 正则表达式:比较直观,但比较复杂(字符串的模糊匹配)
  2. html.parser
  3. lxml
  4. BeautifulSoup:第三方插件,可以使用html.parser和lxml做为他的解析器,比较强大(结构化解析器)
    在这里插入图片描述

网页的基本结构:
在这里插入图片描述

  1. 安装并测试beautifulsoup4:
    (打开cmd,切换到python安装目录的Scripts文件夹中)
    安装:pip install beatifulsoup4
    在这里插入图片描述

  2. 创建beautifulsoup对象:soup = BeautifulSoup(html, “lxml”)
    其中html为刚刚下载的网页,lxml为网页解析器,也可以使用html.parser

  3. 搜索节点:find_all(), find()
    find_all()方法的原型:find_all(name, attrs, string)
    name:节点的名称
    attrs:节点的属性
    string:节点的文字

例: 查找所有标签为a的节点:node = soup.find_all(‘a’)
查找所有标签为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值