码迷,mamicode.com
首页 > 其他好文 > 详细

十三、原生爬虫实战

时间:2018-08-03 18:03:47      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:alt   这一   使用   def   方法   stdout   error   了解   关联   

一、简单实例

1、需求:爬取熊猫直播某类主播人气排行

2、了解网站结构

分类——英雄联盟——"观看人数"

3、找到有用的信息

技术分享图片

二、整理爬虫常规思路

1、使用工具chrome——F12——element——箭头——定位目标元素

目标元素:主播名字,人气(观看人数)

技术分享图片

 

2、方法:使用正则表达式提取有用的信息

主播名字,人气(观看人数)

总结

  • 爬虫前奏

1)明确目的

2)找到数据对应的网页

3)分析网页的结构找到数据所在的标签位置

  • 步骤

1)模拟HTTP请求,向服务器发送这个请求,获取到服务器返回给我们的HTML

2)用正则表达式提取我们要的数据(名字,人气)

三、HTML结构分析基本原则

1、爬虫分析,最重要的一步,找到标签(即左右边界)

原则:

1)尽量选择有唯一标识性的标签

2)尽量选择离目标信息最近的标签

不同人选择的标签可能不同。

 

四、数据提取层级及原则

1、找到最近的定位标签(肉眼可见)

有关联的信息作为一组,找离这一组最近的定位标签

如:示例中的“主播姓名”和“人数”是有关联的,作为一组

2、判断选择的标签是否是唯一的(需代码验证)

3、尽量选择可闭合的定位标签

 

可闭合,是指可将目标信息包裹起来的定位标签。如:<... />

技术分享图片

 

 

技术分享图片

4、代码实战

 1 # coding=utf-8
 2 import re
 3 from urllib import request
 4 
 5 url = https://www.panda.tv/all 6 r = request.urlopen(url)
 7 htmls = r.read()
 8 
 9 print(type(htmls))  # 打印type,结果是bytes类型
10 htmls = str(htmls, encoding=utf-8‘)  # 将bytes转成utf-8
11 print(htmls)

运行结果

Traceback (most recent call last):
  File "E:/pyClass/thirtheen/spider.py", line 12, in <module>
    print(htmls)
UnicodeEncodeError: gbk‘ codec cant encode character ‘\xa0 in position 62321: illegal multibyte sequence

原因是使用的print()是win7系统的编码,但是win7系统的默认编码是GBK,解决方式,增加如下代码

1 import io
2 import sys
3 sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding=gb18030‘)

优化后代码

# coding=utf-8
import re
from urllib import request
import io
import sys
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding=gb18030)

class Spider():

    url = https://www.panda.tv/all

    def __fetch_content(self):
        r = request.urlopen(Spider.url)
        htmls = r.read()
        htmls = str(htmls, encoding=utf-8)  # 将bytes转成utf-8
        print(htmls)
        return htmls


    def go(self):
        self.__fetch_content()



spider=Spider()
spider.go()

 

五、正则分析HTML

1、获取root_html

正则表达式匹配<div class="video-info">和</div>之间的所有字符,有哪些方式?

技术分享图片

匹配所有字符的方式

1)[\s\S]*?

2)[\w\W]*?

* 表示任意次

?表示贪婪

2、代码实战

 

十三、原生爬虫实战

标签:alt   这一   使用   def   方法   stdout   error   了解   关联   

原文地址:https://www.cnblogs.com/loveapple/p/9408611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!