学习爬虫最需要什么?兴趣+一套完整的学习指导
兴趣这是教不来的,必需自备。
然后就是爬虫完整的学习路径了,很长,很长,上图说话
从脚本爬虫学习并过渡到Scrapy框架的整体流程【从左往右、至上往下】
适合人群:学Scrapy必须有Python基础【没基础都有点瞎扯,除非你是学洗能力强、理解能力强】
脚本爬虫部分爬虫第一步:写一个最简单的脚本
极简爬虫脚本就是requests+lxml,分析一个页面,然后通过xpath获取数据,首先第一步,对url发起请求并拿到响应:
import requests
response = requests.get('http://www.spbeen.com/')
print(response.status_code)
# 输出结果200
输出结果之后,作为新手入门,最好是看到返回的结果是什么样子的,所以花点时间炮制了如下函数:
# response是resquests请求之后返回的结果
def requests_view(response):
# Python内置库,不需要安装
import webbrowser
request_url = response.url
base_url = '
'%(request_url)base_url = base_url.encode()
content = response.content.replace(b"
",base_url)# 新建临时文件
tem_html = open('tmp.html', 'wb')
tem_html.write(content)
tem_html.close()
webbrowser.open_new_tab("tmp.html")这里用到的知识点,是web标记语言里面的base标签, 标签为页面上的所有链接规定默认地址或默认目标,所以页面的静态样式和图片文件可以连接原路径,页面显示效果和原网页可以保持一致。
完整代码:
import requests
response = requests.get('http://www.spbeen.com/')
# print(response.status_code)
def requests_view(response):
import webbrowser
request_url = response.url
base_url = '
'%(request_url)base_url = base_url.encode()
content = response.content.replace(b"
",base_url)tem_html = open('tmp.html', 'wb')
tem_html.write(content)
tem_html.close()
webbrowser.open_new_tab("tmp.html")
requests_view(response)
页面效果对比,如下图【重点看浏览器地址栏,一个本地临时文件,一个网络URL地址】:
接下来就是使用xpath来提取数据,这里墙裂推荐Firefox浏览器+Firebug插件+Firepath插件,找一个网页中的元素,自动生成xpath路径,例如检索Xpath教程,如下图:
然后就得到了这样一串xpath:
.//*[@id='content_show']/div/div[1]/div[1]/div[1]/h3/a
# 解析出文本,只需要在后面加上text()函数
.//*[@id='content_show']/div/div[1]/div[1]/div[1]/h3/a/text()
最后通过xpath来解析response的正文部分,代码和结果如下:
import requests
response = requests.get('http://www.spbeen.com/')
from lxml.etree import HTML
html = HTML(response.content)
a_str = html.xpath(".//*[@id='content_show']/div/div[1]/div[1]/div[1]/h3/a/text()")
print(a_str)
# 结果:['xpath教程']
极其简单的爬虫脚本就这么完成,还带一个可视化函数,查看结果用的
确切来说,上面这段脚本算不上爬虫,它只是一个request+lxml+webbrowser的一个脚本,从写死的网址获取一个指定位置的字符串
完成了简单爬虫,然后可以试试大批量的获取信息了爬虫第二步:获取大批量数据
对目标的租房网站,进行一个爬取,从中本页的所有数据并提取下一个抓取的数据页面,爬爬爬~
数据储存用到的数据库是sqlite,简单方便,python自带驱动。数据入库操作,常用就是sql语句了。不过更好用的是ORM【对象关系映射】,只要新增类字段,就可以了自动创建新的表格字段,ORM用的sqlalchemy【Pocoo出品,必属精品】爬虫第三步:可视化数据
数据已经入库,然后怎么查看数据呢?jupyter+pygal+sqlalchemy,直接在网页上查看数据库数据,画出你想看的数据表格
当然制图效果不会那么顺畅,windows自身是缺失各种库【习以为常】,安装也不方便。开发还是*unix方便。当然win有解决方案,从Ipython中拿Display函数可以直接显示在Jupyter中。【同样有Ubuntu下的开发视频】爬虫第四步:异常处理和代理
异常处理:脚本爬虫的缺点就是容易bug,因为网页是很不规范的,出错概率极大,容易出错的代码,必须用try来包裹
代理:有USER_AGENT和代理IP
不同的web网页对不同USER_AGENT会响应不同的网页结构和数据,分析html的规则也不能是一套可以解决的。
代理IP的作用主要是解决防爬,当然防爬措施很多,不同网站有不同的措施,不能一概而论
第一步:了解整个Scrapy运行流程
上一个用了很多很多遍的图,描述整体框架
了解之后呢?创建自己的爬虫项目,亲自体验下这个流程第二步:创建Scrapy项目
这整个流程,可以参考基础的Scrapy项目,链接:免费Scrapy课程
从发布到现在已经2-3个月了,只给自己认识的4个人宣传了下,未做其他任何宣传。参加课程的,都是逛网易云课堂看到,好评不少~
免费课程基本步骤:熟悉Scrapy Shell
创建Scrpay项目
创建基础爬虫
分析目标网站,获取数据
自定义管道文件,sql语句入库
用可视化sql工具查看数据,OVER~
简单的介绍了Scrapy的基础流程,涉及爬虫文件和管道文件,有兴趣可以看看哈~第三步:创建CrawlSpider的Scrapy项目
同样是内置的爬虫模板,但是CrawlSpider和BasicSpider是不同的,CrawlSpider适合爬取URL规律网站,BasicSpider是最通用的。CrawlSpider定义了一些规则(rule)来提供跟进link的方便的机制。
也许该spider并不是完全适合您的特定网站或项目,但其对很多情况都使用。
熟悉正则表达式,分析网站的URL链接。正则是非常强大的,主流的编程语言都支持,编程人员必备。
第四步:内置的管道文件和重构
使用Scrapy框架内部的图片或者文件管道,可以下载目标网站的几十GB图片,不是难题。
写不下去了,技术人员不太会写文章,也不太会运营和宣传~有时间日后再写