轻轻学爬虫—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)一起进步学习。
上一篇:数据采集之贝壳新房【完整代码(数据库+图片)】


下一篇:Python爬虫之Scrapy框架