作者:高野良
链接:https://www.zhihu.com/question/20899988/answer/58388759
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
#-*-coding:utf-8-*- #编码声明,不要忘记!
import requests #这里使用requests,小脚本用它最合适!
from lxml import html #这里我们用lxml,也就是xpath的方法
#豆瓣模拟登录,最简单的是cookie,会这个方法,80%的登录网站可以搞定
cookie = {}
raw_cookies = ''#引号里面是你的cookie,用之前讲的抓包工具来获得
for line in raw_cookies.split(';'):
key,value = line.split("=", 1)
cookie[key] = value #一些格式化操作,用来装载cookies
#重点来了!用requests,装载cookies,请求网站
page = requests.get('#妹纸的豆瓣主页#',cookies=cookie)
#对获取到的page格式化操作,方便后面用XPath来解析
tree = html.fromstring(page.text)
#XPath解析,获得你要的文字段落!
intro_raw = tree.xpath('//span[@id="intro_display"]/text()')
#简单的转码工作,这步根据需要可以省略
for i in intro_raw:
intro = i.encode('utf-8')
print intro #妹子的签名就显示在屏幕上啦
#接下来就是装载邮件模块,因为与本问题关联不大就不赘述啦~
爬虫入门
对爬虫有个明确的认识
在战略上藐视
- 所有网站皆可爬
- 框架不变
发送请求——获得页面——解析页面——下载内容——储存内容
在战术上重视
- 持之以恒,戒骄戒躁
- 宏伟的目标,来让你有持续学习的动力
我要爬整个豆瓣!...
我要爬整个草榴社区!
我要爬知乎各种妹子的联系方式*&^#%^$#
没有实操项目,真的很难有动力
python基本
- list,dict:用来序列化你爬的东西
- 切片:用来对爬取的内容进行分割,生成
- 条件判断(if等):用来解决爬虫过程中哪些要哪些不要的问题
- 循环和迭代(for while ):用来循环,重复爬虫动作
- 文件读写操作(open,close等):用来读取参数、保存爬下来的内容等
- 编码常识(codecs等):非常关键,爬虫写熟了以后遇到的各种古怪问题
知识储备
网页的基本知识
- HTML语言
- 发包和收包的概念
- js知识
分析语言
- 正则表达式
- XPATH
- Beautifulsoup
工具来辅助
- F12 开发者工具
- 抓包工具httpfox
- XPATH CHECKER (火狐插件)
- 正则表达测试工具
常用爬虫模块
- urllib
- urllib2
- requests
框架
- scrapy
动态页面
- selenium
- phantomJS
验证码
- PIL
- opencv
- pybrain
- 打码平台
数据库
- mysql
- mongodb
- sqllite
爬来的东西怎么用?
- numpy 数据分析,类似matlab的模块
- pandas 基于numpy的数据分析模块
进阶技术
- 多线程、分布式