1.创建一个项目
创建一个项目
我们来看看这个项目的结构:
里面就是一些核心组件2 创建一个爬取信息的spider
创建一个hoptop的爬虫3 我们可以调试一下先
使用 scrapy shell +网址
然后view (response)
but
发现被禁止了
这种情况下,一般来说,就是要加一个头信息,有些时候,为了保留登录状态,还需要获得cookie的信息。
在这里我采用了browsercookie来自动获取我的chrome 浏览器的cookie,并加上了headers再试一遍:
4 反反爬虫
安装browsercookie 在setting 里面增加headers 在middleware中增加代码 在setting 中设置启动刚刚的middlewares 最后调试一下pip3 install browsercookie
出现200
然后view(response)跳出页面
说明成功了‘
5 提取内容模块
之后就是解析页面了,解析页面可以使用css xpath 或者BeautifulSoup 这里先上代码,因为这个属于独立的一块,那个用的好久用哪个。
比如像这样提取一个标题(用xpath):
xpath实例
6 设置item
我这里展示一下提取文章名字和摘要
先在item.py中封装
item封装
7 编写spider
这里我只是想介绍个整理,先上spider 代码啦
# -*- coding: utf-8 -*-
import scrapy
from ..items import SpiderProjectItem
class HoptopSpider(scrapy.Spider):
name = 'hoptop'
allowed_domains = ['www.jianshu.com/u/9ea40b5f607a']
start_urls = ['http://www.jianshu.com/u/9ea40b5f607a/']
def parse(self, response):
content = SpiderProjectItem()
titles = response.xpath('//*[@id]/div/a/text()').extract()
#for one in titles:
# content['title'] = one
# yield content
abstracts = response.xpath('//*[@id]/div/p/text()').extract()
#for unit in abstracts:
# content['abstract'] = unit
# yield content
n = len(titles)
i = 0
while i < n :
content['title'] = titles[i]
content['abstract'] = abstracts[i]
i = i + 1
yield content
我这里的代码比较简陋,只是初步提取信息,还不包括下滑翻页,只是展示一下而已
测试一下
scrapy crawl hoptop -o result.csv
成功了,虽然有点简陋
结果
写在后面:
-
首先要明白爬虫用来干什么,一般来说,是用来批量获取网络上的信息资源,比如我想把hoptop的博客全部下载下来离线看,那么他写了那么多的博客,我不可能一页一页地复制,所以我可以编写爬虫批量下载
-
有些时候不一定要用框架,但是框架可以帮你节约一点时间,也别是大型的项目的时候
-
这里只是很简陋地展示了一下,后续可以加入python对文本的处理能力,来规则化地获取信息。
4。如果要简单地使用scrapy 我觉得步骤可以如下:
1.先用shell调试,看看结构和反爬虫手段
2.然后记得在setting中加上浏览器的headers ,编写middlewares 可以使用chrome的Cookies模拟登陆。
3.接下来定义item中需要保存的内容(注意是文本的)
4.然后编写spider 解析函数
网友评论