当前位置:首页 > 未分类 > 正文

走近Python爬虫(一):爬虫的作用和技术、获取网页内容、解析网页内容

admin 发布:2025-02-25 13:06 7


文章目录

本文是Python爬虫系列博客的第一篇,内容概览如下:

在这里插入图片描述

一、绪论 爬虫的作用

爬虫可用于收集数据,是最常用的使用方法。由于爬虫是程序,运行速度快且不会疲劳,因此使用爬虫获取大量数据变得简单快捷。现在绝大多数网站都基于模板开发,使用模板可快速生成相同版式、不同内容的页面。因此,只需针对一个页面开发爬虫,即可爬取基于同一模板生成的不同页面。这种爬虫称为定向爬虫,也是本博客所讲述的爬虫类型。

尽职调查是投资人在投资前了解公司是否尽职尽责、是否存在欺诈行为的过程。以往,尽职调查通常通过调查客户或审计财务报表来完成。然而,使用爬虫后,尽职调查变得更加便捷。例如,对于一个电商公司的调查,想要了解其商品销售情况。该公司声称每月销售额数亿元。通过使用爬虫获取该公司网站所有商品的销量情况,可以计算出实际总销售额。此外,还可以爬取所有评论并进行分析,以发现是否存在刷单行为。

刷流量是爬虫的天然功能。当爬虫访问网站时,如果成功隐藏身份,网站无法辨别其为爬虫,将视为正常访问。因此,爬虫会无意中增加网站的访问量。除了刷流量,爬虫还可参与各种秒杀活动,如在电商网站上抢购商品、优惠券、机票和火车票等。目前,许多人专门利用爬虫参与活动并从中获利,这被称为”薅羊毛”,而从事此类行为的人被称为”羊毛党”。然而,使用爬虫进行盈利的行为实际上处于法律的灰色地带。

爬虫的技术

遇到各种反爬虫问题时,应该如何突破,如何隐藏爬虫,如何模拟人的行为,以及遇到没有见过的反爬虫策略时,应该如何思考及如何使用爬虫爬取非网页内容等。

获取网页内容并解析。只要能达到这个目的,用什么方法都没有问题。关于获取网页,常用的是Python的两个第三方模块,一个是requests,另一个是爬虫框架Scrapy。关于解析网页内容,常见的3种方式——正则表达式、XPath和BeautifulSoup。两种网页获取方式和3种网页解析方式可以自由搭配,随意使用。

由于网站必然不会这么轻易地让人把数据全给拿走,因此很多网站都会采取各种反爬虫措施。常规的反爬虫措施包括但不限于访问频率检查、验证码、登录验证、行为检测。

二、获取网页—requests模块

requests是Python的一个第三方HTTP(Hypertext Transfer Protocol,超文本传输协议)库,它比Python自带的网络库urllib更加简单、方便和人性化。使用requests可以让Python实现访问网页并获取源代码的功能。

首先,命令行安装requests模块:

pip install request

1.requests模块简单使用

    import requests
    html_str = requests.get(’网址’).content.decode(‘编码方式’) # 编码方式默认是UTF-8

data对象表示查询参数:

    import requests
    data = {'key1': 'value1',
          'key2': 'value2'}
    html_formdata = requests.post(’网址’, data=data).content.decode()
    #用formdata提交数据

    html_json = requests.post(’网址’, json=data).content.decode() #使用JSON提交数据

2.使用多线程

单线程爬虫每次只访问一个页面,不能充分利用计算机的网络带宽。一个页面最多也就几百KB,所以爬虫在爬取一个页面的时候,多出来的网速和从发起请求到得到源代码中间的时间都被浪费了。所以,要使用多线程。

    from multiprocessing.dummy import Pool
    def calc_power2(num):
        return num * num
    pool = Pool(3)
    origin_num = [x for x in range(10)]
    result = pool.map(calc_power2, origin_num)
    print(f’计算0-9的平方分别为:{result}')

三、解析网页 1.XPath

需要先安装lxml,不同操作系统安装方式不同,请自行百度。

    import lxml html
    selector = lxml.fromstring(’网页源代码’)
    info = selector.xpath(’一段XPath语句’)

查找技巧:从内向外一直找到一个有独特的属性值的元素为止,不是非要找到顶层。

Chrome浏览器可以在页面源码上定位到元素后,右键“Copy”→“Copy XPath”。

    //div[@class="useful"]/ul/li/text()

参考

《Python爬虫开发:从入门到实战(微课版)》谢乾坤

0


暂无评论,欢迎抢沙发
欢迎评论