起因
- 问答网站做到现在,没有数据啊,所以需要一些数据;
- 爬虫很好玩,早就在知乎看见别人爬各种羞羞网站的代码,不过一直没时间,最近感觉自己秋招也没啥希望,还是做点自己想做的事情吧;
- 我的Python基础几乎为0,虽然看过语法,然而都忘了,这玩意不写,两天就忘了;所以给点动力,也可以好好工作一把;
爬虫
- 一直听说爬虫,其实并不是什么厉害的东西;在B/S架构下,所有数据都是要传输到我们客户端上的,也就是说内容会直接以文件形式传输过来,假设是C/S结构,人家给你本地的客户端加加密,我们就没有办法了,但是html是公共协议,浏览器能解析,那我们也行;爬虫的好处就是可以自动的,不断浏览网页,并且可以获取我们想要的内容,比如图片;
- 如果我们想让爬虫动起来,那就需要模拟一个浏览器,所以首先要构建一个请求;在请求中我们添加headers,cookie,让服务器认为我们是一个友好的浏览器;
- requests包 传送门 requests是非常easy的包,他真的是给人用的,看一下教程即可;
超级简单的实例
- url + headers + cookie ,完美欺骗我校pt站,直接模拟了登陆
import requests
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Host': 'pt.cugb.edu.cn',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'}
cookies = {'c_secure_uid':'NTQ5',' c_secure_pass':'7d72b685dccd03101b9f7eb6344f7c76',' letskillie6':'false',' c_secure_user_link_online':'success'}
url='http://pt.cugb.edu.cn/'
r = requests.get(url,cookies,headers = headers,cookies = cookies)
print r.text
- 引入PyQuery,抓取特地内容,其实是因为pyspider框架就只能爬去两条,所以我就自己写了实验了一下,发现确实只能爬出两条,so以后再想这个问题吧;
import requests
from pyquery import PyQuery
headers = {'User-Agent': 'GoogleBot',
'Host': 'www.zhihu.com',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'}
url = "https://www.zhihu.com/question/19942068"
request = requests.get(url,headers = headers)
print request.text
q = PyQuery(request.text)
for each in q('.RichContent-inner>span.RichText.CopyrightRichText-richText').items():
each.html()