乐趣区

关于python爬虫:python爬虫教程一


    Python 版本:python3.6
    应用工具:pycharm

一、第一个爬虫程序

    取得网址源代码。如下图获取百度页面源代码。

               

二、Web 申请过程

    1. 服务器渲染:在服务器中间接把数据和 html 整合在一起,返回给浏览器。(在页面源代码中能看到数据)
    2. 客户端渲染:第一次申请只有一个 html 骨架,第二次申请拿到数据,进行数据展现。(在页面源代码中,看不到数据)

三、requests 入门

    1. 获取搜狗引擎搜寻周杰伦页面源代码。
      


    2. 呈现报错,网页存在反爬,解决反扒。


    3. 批改代码,使其更加灵便获取不同搜寻内容对应不同页面源代码。


    4.当申请形式为 POST 时,以百度翻译为例获取页面源代码。
    


    5. 当想要爬取数据与网页框架不在一起时。以豆瓣电影排行榜为例。需先找到所需爬取数据地位。

    将其参数变量进行封装,补充网址参数,其参数信息地位及代码如下:


    留神:应用完爬虫程序后,敞开爬虫程序。
    如上示例需应用 resp.close()敞开爬虫程序。

四、数据解析

    本文中将介绍三种解析形式:re 解析、bs4 解析、xpath 解析。
    1、re 解析:Regular Expression,正则表达式,一种应用表达式的形式对字符串进行匹配的语法规定。
    长处:速度快、效率高、准确性高
    毛病:上手难度较高
    语法:应用元字符进行排列组合用来匹配字符串(元字符是具备固定含意的特殊符号),罕用元字符:
    . 匹配除换行符以外的任意字符    a|b 匹配字符 a 或 b
    \w 匹配字母或数字或下划线      \W 匹配非字母或数字或下划线
    \s 匹配任意空白符               \S 匹配非空白符
    \d 匹配数字                     \D 匹配非数字
    […] 匹配字符组中的字符          [^…] 匹配除字符组中的所有字符
    ^ 匹配字符串的开始              $ 匹配字符串的完结
     量词:管制元字符呈现的次数
    * 反复零次或屡次
    + 反复一次或屡次
?反复零次或一次
    {n} 反复 n 次
    {n,} 反复 n 次或更屡次
    {n,m} 反复 n 到 m 次
(1)re 模块应用,findall() 匹配字符串中所有的合乎正则的内容


(2)finditer()匹配字符串中所有的内容,返回迭代器


    从迭代器中拿出内容须要.group()


(3)search,找到一个后果就返回,返回的后果是 match 对象,拿数据需应用.group()


(4)match,从头开始匹配


    入选取数据开始即为所需数据时,可输入后果。
      


(5)预加载正则表达式,可重复使用


(6)正则中内容独自提取。咱们将想要提取内容局部定义组 (?P< 分组名字 > 正则),而后应用.group() 提取某个组的内容。(re.S:让. 可能匹配换行符)


    2. 实战爬取豆瓣 Top250 电影信息。
(1)应用 requests,拿到页面源代码。


(2)应用 re,解析数据

    设定爬取以上四个数据,电影名字、年份、评分、评估人数,在页面源代码中找到所需内容地位(红色框),并找到内容定位办法及地位(红色框)

    解析数据:其中.strip() 去掉年份后面空格。


    将获取到文件保留为文件。导入 csv,将内容存入字典,同理 year 需独自解决。

    输入文件 data.csv 内容
            
    3. 实战爬取电影地狱下载链接,指标爬取 2021 必看热片信息。

(1)获取页面源代码
            


如上输入后果中存在乱码问题,咱们默认应用的字符集为 utf-8,可看到其网站的字符集为 gb2312,须要指定应用字符集解决乱码问题。
          


(2)定位到 2021 必看热片,在页面源代码中找到所需地位。


(3)从 2021 必看热片中提取到子页面的链接地址

    


    失去的子页面链接不残缺,短少域名,须要进行一个链接的拼接。


    失去了残缺的子页面链接,将子页面链接保存起来。

    提取子页面内容,输入失去片名及下载链接。

退出移动版