开始学习python爬虫,这部分不太好讲,网上也有足够多的教程了,这里我们先介绍爬虫基本原理、运行步骤、主要技术以及一个小案例。之后的文章,我们也将主要以爬取我们需要的数据为案例逐步介绍爬虫关键技术。
定义
网络爬虫,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。通俗来说就是模拟用户在浏览器上的操作,从特定网站,自动提取对自己有价值的信息。主要通过查找域名对应的IP地址、向IP对应的服务器发送请求、服务器响应请求,发回网页内容、浏览器解析网页内容四个步骤来实现。
主要技术
数据采集、数据存储、动态网页爬取、APP爬取、验证码破解、模拟登陆、代理试用、爬虫框架、分布式爬取等等。 目前主流的网络爬虫工具是python,涉及的库和工具: 网页爬取:urlib、requests、aiohttp、Selenium、Splash 网页解析:re、lxml、Beautiful Soup、pyquest 数据存储:JSON、XML、CSV、MySQL、MongoDB、Redis Web组件:Flask、Tornado 处理反爬:Tesserocr、ADSLProxy、ProxyPool、PookiesPool APP爬取:Charles、mitmproxy、mitmdump、Appium 爬虫框架:pyspider、Scrapy、Scrapy-Redis、Scrapy-Splash 管理部署:Docker、Scrapyd、Scrapyd-API、Scrapyd-Client、Gerapy
基本的爬虫工作原理
这部分就不再细讲,感兴趣的同学可以看了一下:
https://www.cnblogs.com/zsychanpin/p/7066245.html
网络爬虫的基本工作流程例如以下:
1.选取种子URL; 2.将这些URL放入待抓取URL队列; 3.从待抓取URL队列中取出待抓取在URL。解析DNS,而且得到主机的ip,并将URL相应的网页下载下来,存储进已下载网页库中。 4.分析已抓取URL队列中的URL,分析当中的其它URL,而且将URL放入待抓取URL队列,从而进入下一个循环。
实例
原理听起来比较枯燥,下面我们就先用一个实例来说明一下爬虫的过程,当然这是一个非常简单的小案例,如果将来想要更加复杂的目标,涉及的技术就多了。 最近关注银行股,想要获取某一只银行股当前的市盈率是多少,这就是我们的目标了。这里我们用requests xpath来实现
首先,我们的信息源是东方财富网,以浦发银行[代码:sh600000]为例
用Chrome浏览器审查元素
我们用xpath的绝对定位方法,把id=gt6-2的部分摘出来。
path即为//*[@id="gt6_2"
源代码如下:
代码语言:javascript复制#-*- coding:utf-8 -*-
import requests
from lxml import etree
url = 'http://quote.eastmoney.com/sh600000.html'
content = requests.get(url).content
# 用etree.HTML()解析对象
html = etree.HTML(content)
# 右键copy.Xpath复制后,通过etree.xpath()函数调用
pe=html.xpath('//*[@id="gt6_2"]')
print(pe[0].text)
运行结果: 5.54