入门
0.准备工作
需要准备的东西: Python、scrapy、一个IDE或者随便什么文本编辑工具。
1.技术部已经研究决定了,你来写爬虫。
随便建一个工作目录,然后用命令行建立一个工程,工程名为miao,可以替换为你喜欢的名字。
scrapy startproject miao
随后你会得到如下的一个由scrapy创建的目录结构
在spiders文件夹中创建一个python文件,比如miao.py,来作为爬虫的脚本。
内容如下:
2.跑一个试试?
如果用命令行的话就这样:
cd miao
scrapy crawl NgaSpider
你可以看到爬虫君已经把你坛星际区第一页打印出来了,当然由于没有任何处理,所以混杂着html标签和js脚本都一并打印出来了。
解析
接下来我们要把刚刚抓下来的页面进行分析,从这坨html和js堆里把这一页的帖子标题提炼出来。
其实解析页面是个体力活,方法多的是,这里只介绍xpath。
0.为什么不试试神奇的xpath呢
看一下刚才抓下来的那坨东西,或者用chrome浏览器手动打开那个页面然后按F12可以看到页面结构。
每个标题其实都是由这么一个html标签包裹着的。举个例子:
可以看到href就是这个帖子的地址(当然前面要拼上论坛地址),而这个标签包裹的内容就是帖子的标题了。
于是我们用xpath的绝对定位方法,把class='topic’的部分摘出来。
1.看看xpath的效果
在最上面加上引用:
from scrapy import Selector
把parse函数改成:
def parse(self, response):
selector = Selector(response)
在此,xpath会将所有class=topic的标签提取出来,当然这是个list
这个list里的每一个元素都是我们要找的html标签
content_list = selector.xpath("//*[@class=‘topic’]")
遍历这个list,处理每一个标签
for content in content_list:
此处解析标签,提取出我们需要的帖子标题。
topic = content.xpath(‘string(.)’).extract_first()
print topic
此处提取出帖子的url地址。
url = self.host + co