Python爬虫学习笔记:基础篇

备注:本学习笔记适合对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

操作浏览器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352