美文网首页
Python爬虫学习笔记:基础篇

Python爬虫学习笔记:基础篇

作者: 无敌小小坤 | 来源:发表于2019-04-07 18:25 被阅读0次

备注:本学习笔记适合对python语法有一点基础,对网页有一些基础认识,同时刚刚接触爬虫的同学,不过如果什么都不懂也没关系,本文会在将代码标注得特别详细。本文所有代码环境:WIN10,python 3.7 ,Chrome 73.0,MySQL8.0

python库的安装:

直接shell中(win10用powershell,也可用cmd)输入命令(以requests库为例):

pip install requests

常用的python爬虫库:

  • requests

  • lxml

  • Beautiful Soup

  • pyquery

  • PyMySQL

  • Selenium

常用的数据存储:

  • txt文档,csv,Excel (简单粗暴,适合自己玩)

  • Json格式(进阶,与前后端交互多采用)

  • Mysql,MongoDB (项目多采用)

常用库的常用功能的使用汇总

requests

功能与作用:和想要爬取的网页建立联系,相当于爬虫的第一步,“打开”要爬取的网页。
首先,先介绍一下网页的基础知识:
(有H5,CSS, JS前端知识的直接跳过,没有的也不用去学习,我我们只是爬取,不是建立网页,一次解决一个问题,关注一个问题,学习忌讳一次就想解决所有的问题,)

  1. 网址:网页的“家”的地址,或者“坐标位置”,网页的归宿地,我们通过网站去打开网页,再专业一些,就是常说的URL
  2. 超文本:我们随便在Chrome中打开一个网站,比如百度首页,然后点击鼠标右键-检查,或者直接Ctrl+Shift+I,得到了一个相当于网页代码的东西,类似于“家里的具体布置图纸情况”,实际的情况就是根据这个图纸转换而来的,“图纸”是给设计人员使用的,真实情况是给使用者使用的。这个“图纸”实际就是一些列HTML代码,包含了一系列的标签。如下图的百度:


    百度搜索的HTML

    从中我们可以看出:

  • HTML是以<html>标签开头,</html>标签结尾
  • 中间嵌套了好多其他标签,例如<head>与<body>,相互之间构成层级结构
  • 选中图中标红的按钮,在选中百度的搜索框,Chrome会自动定位这个搜索框所在的标签
  1. 网页交换的过程:其实就是你的电脑(或手机)给服务器发送一个请求,服务器获得这个请求后将响应传递到电脑的页面上,在这个过程,服务器可以会验证一些事情,例如你是不是电脑人(爬虫)呀,让你输入验证码(爬虫过于频发的访问服务器会造成服务器压力过大);又或者你是不是大赌场的会员呀,有没有满18岁呀,有没有登录账号,又不是会员,美女荷官就不给你在线发牌等等。
  2. 常见的请求:
  • get:相当于在浏览器中输入网站并回车
  • post:典型的情景是用户输入账号与密码后点击登录

有了这些基础,直接开始代码实战吧。

requests

直接给出一个实例的代码与解释标注:

import requests     #导入requests库
url = 'www.baidu.com'
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    }
# headers字典在这里是把爬虫伪装成浏览器,还有存在登录信息Cookies的作用,可以在字典了添加cookies的键-值
try:
    response = requests.get(url,headers=headers)
    response.raise_for_status()  
    #请求状态码不是200则会引发HTTPError异常
    response.encoding = response.apparent_encoding
    #r.encoding :从HTTP header 中c猜测的响应内容编码方式,如果不存在charset,则默认为ISO-8859-1
    # r.apparent_encoding : 从内容中分析出的响应内容编码方式(备选编码方式)
    #提前设置encoding,避免后续解析乱码问题
    content = response.text
    print(content)
    # 获取网页的HTML代码给content
    return content
except Exception as e:
    print('Error',e.arg)

以上就是一个典型的requests库使用情况,这几行代码使用频率很高。
除此之外,requests还有一些其他的也经常用到:

  • requests.post(url) post请求
  • response.json() 直接返回json字典格式
  • response.content 返回二进制格式的文件,通常用于图片MP3等
  • response.status_code 返回响应的状态码(200是成功)

lxml

在requests得到网页代码后,还需要对代码进行解析,通常最原始的方法就是写正则表达式进行匹配,但是太麻烦,又容易出错(正则表达式大神无视),就可以采用解析库lxml,本质上就是XPath(XML路径语言)

Beautiful Soup

进一步强大的解析库

pyquery

解析库终极选择

Selenium

操作浏览器

相关文章

网友评论

      本文标题:Python爬虫学习笔记:基础篇

      本文链接:https://www.haomeiwen.com/subject/ydasiqtx.html