轻轻学爬虫—scrapy框架巧用3
# 轻轻学爬虫—scrapy框架巧用3
本节继续来学习scrapy框架,本博主会以不同方法,实战的方式来讲解爬虫。省去了全篇一律的方法。
上节课我们学习了如何常见一个scrapy及一个spider。本节我们就在spider中实现一个简单的小爬虫。
由于大部分的知识没有讲到,大家可以复制我的代码演示,后续我会把缺少的知识点,补上不要着急、
![scrapy目录.png](http://www.icode9.com/i/li/?n=2&i=images/20210617/1623937761971463.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
我们这次代码都在这个文件里写,直接上代码。
## 爬虫案例
```python
import scrapy
import bs4
class DangdangSpider(scrapy.Spider):
#爬虫名字启动时候要用
name = 'dangdang'
#可以写可以不写
allowed_domains = ['http://www.dangdang.com/']
#实际项目中url中可能会放对象而不是单纯的url
start_urls = [{'url':'http://search.dangdang.com/?key=python&act=input','method':'GET'}]
def start_requests(self):
"""
重写请求
:return:
"""
#临时部分,后续会加到中间件
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'
}
for req_obj in self.start_urls:
mothod = req_obj.get('mothod',None)
url = req_obj.get('url',None)
if mothod == 'POST':
data={}
yield scrapy.Request(url, dont_filter=True, headers=headers, method="POST",body=data,callback=self.parse)
else:
yield scrapy.Request(url, dont_filter=True,headers=headers,method="GET",callback=self.parse)
def parse(self, response):
bs_res = bs4.BeautifulSoup(response.text, 'html.parser')
li_list = bs_res.find_all('ul', class_='bigimg')
for li in li_list:
li_p_name = li.find_all('p', class_='name')
for i in li_p_name:
title = i.find('a').text
url = i.find('a')['href']
print(title, url)
```
大家可以复制我的代码,刚开始肯定有不懂的地方,我先大致讲解一下。
### 类属性
name 爬虫名字启动时候要用 我们起的名字是dangdang
allowed_domains 爬虫作用范围,可以不写
start_urls 其实url可以放地址url也可以构造请求对象。
### 方法
start_requests 这个是系统方法,我这里重写了这个方法,考虑到我们请求很多个网站时,通用框架时,请求方式参数都会变,这里做了重写。
parse 解析方法 。start_requests请求后我们进行回调,将response解析。
### 其他知识
bs4库解析html库后续会讲。xpath和正则后续都会涉及。
目前代码很丑很简陋这没关系,美化也是我们学习的过程,有了代码后我们如何启动呢。打开终端执行下面命令。
```
scrapy crawl dangdang
```
注意:这个命令一定要在下面图片中的目录,不然找不到命令。
![启动命令.png](http://www.icode9.com/i/li/?n=2&i=images/20210617/1623937774432129.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
启动后爬虫会运行一大堆,看不懂的过程,没关系,我们下节课就来学习分析这些看不懂的东西,想要学好scrapy框架,这些是必须要掌握的。
### 过程和结果
![效果.png](http://www.icode9.com/i/li/?n=2&i=images/20210617/1623937781817094.png?,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
到这里一个小爬虫就写完了,这是我们写的第一个爬虫值得高兴。多理解一下上面粗糙的代码,等学过一定时间后你回头看看粗糙的说明你成长了。
码字不易,欢迎大家在评论区留言,收藏。或者加入[群聊](https://jq.qq.com/?_wv=1027&k=vH00muGu)一起进步学习。