新闻  |   论坛  |   博客  |   在线研讨会
python爬虫基本思路
laical | 2020-07-29 17:21:39    阅读:60   发布文章

Python爬虫要经历爬虫、爬虫被限制、爬虫反限制的过程。当然后续还要网页爬虫限制优化,爬虫再反限制的一系列道高一尺魔高一丈的过程。爬虫的初级阶段,添加headers和ip代理可以解决很多问题。


爬虫的基本思路:1.爬取

对于爬取来说,我们需要学会使用不同的方法来应对不同情景下的数据抓取任务。

爬取的目标绝大多数情况下要么是网页,要么是 App,所以这里就分为这两个大类别来进行了介绍。

对于网页来说,我又将其划分为了两种类别,即服务端渲染和客户端渲染,对于 App 来说,我又针对接口的形式进行了四种类别的划分——普通接口、加密参数接口、加密内容接口、非常规协议接口。

所以整个大纲是这样子的:

  • 网页爬取

    • 服务端渲染

    • 客户端渲染

  • App 爬取

    • 普通接口

    • 加密参数接口

    • 加密内容接口

    • 非常规协议接口

2、解析

对于解析来说,对于 HTML 类型的页面来说,常用的解析方法其实无非那么几种,正则、XPath、CSS Selector,另外对于某些接口,常见的可能就是 JSON、XML 类型,使用对应的库进行处理即可。

3、存储

存储,即选用合适的存储媒介来存储爬取到的结果,这里还是分为四种存储方式来进行介绍。

  • 文件,如 JSON、CSV、TXT、图⽚、视频、⾳频等,常用的一些库有 csv、xlwt、json、pandas、pickle、python-docx 等。

  • 数据库,分为关系型数据库、非关系型数据库,如 MySQL、MongoDB、HBase 等,常用的库有 pymysql、pymssql、redis-py、pymongo、py2neo、thrift。

  • 搜索引擎,如 Solr、ElasticSearch 等,便于检索和实现⽂本匹配,常用的库有 elasticsearch、pysolr 等。

  • 云存储,某些媒体文件可以存到如七⽜牛云、又拍云、阿里云、腾讯云、Amazon S3 等,常用的库有 qiniu、upyun、boto、azure-storage、google-cloud-storage 等。

4、反爬

反爬这部分是个重点,爬虫现在已经越来越难了,非常多的网站已经添加了各种反爬措施,在这里可以分为非浏览器检测、封 IP、验证码、封账号、字体反爬等。

5、 使用代理

适用情况:大部分网站均限制了IP的访问量

对于“频繁点击”的情况,我们还可以通过限制爬虫访问网站的频率来避免被网站禁掉。


        #! -*- encoding:utf-8 -*-        import requests        import random        # 要访问的目标页面        targetUrl = "http://httpbin.org/ip"        # 要访问的目标HTTPS页面        # targetUrl = "https://httpbin.org/ip"        # 代理服务器(产品官网 www.16yun.cn)        proxyHost = "t.16yun.cn"        proxyPort = "31111"        # 代理隧道验证信息        proxyUser = "username"        proxyPass = "password"        proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {            "host" : proxyHost,            "port" : proxyPort,            "user" : proxyUser,            "pass" : proxyPass,        }        # 设置 http和https访问都是用HTTP代理        proxies = {            "http"  : proxyMeta,            "https" : proxyMeta,        }        #  设置IP切换头        tunnel = random.randint(1,10000)        headers = {"Proxy-Tunnel": str(tunnel)}        resp = requests.get(targetUrl, proxies=proxies, headers=headers)        print resp.status_code        print resp.text

爬虫过程中有很多实际问题需要我们解决,数据采集是一项艰难的工作,想要更加稳定高效的采集数据,需要解决爬虫中的各种问题,亿牛云代理IP就能帮忙解决各种封IP问题。加强爬虫对数据采集的稳定。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客