发布于2020-03-15 18:34 阅读(902) 评论(0) 点赞(0) 收藏(1)
使用命令:pip install scrapy
安装成功后验证是否成功,输入如下代码,执行:
import scrapy
print(scrapy.version_info)
我这里输出的是(1,6,0)版本,说明scrapy安装成功
注:name为项目名称
进入pycharm中开始我们的项目
在spiders中创建爬虫项目,这里是booksSpider.py
、
booksSpider.py 代码为:
from scrapy import Request
from scrapy.spider import Spider
class booksSpider(Spider):
name = 'books'
# 初始请求,获取起始的url
def start_requests(self):
url = 'http://books.toscrape.com/catalogue/category/books_1/index.html'
yield Request(url)
# 解析数据的函数
def parse(self, response):
print(response.text)
start.py文件就像一个公式一样,可以用于任何scrapy项目的运行,只需将项目名称改掉就行了,如下:
start.py 代码为:
注——单引号中的 book 是爬虫的名字
from scrapy import cmdline
cmdline.execute('scrapy crawl book'.split())
在start.py文件中运行后,便可得到网站代码
将2.1中booksSpider.py文件中的输出网页内容利用xpath()方法来爬取我们想要的数据,booksSpider.py 代码为:
from scrapy import Request
from scrapy.spiders import Spider
class booksSpider(Spider):
name = 'books' # 爬虫命名只能用name接收,不能换成其他的
allBooks = [] #保存所有网页的内容
# 初始请求,获取起始的url
def start_requests(self):
url = 'http://books.toscrape.com/catalogue/category/books_1/index.html'
yield Request(url)
# 解析数据的函数
def parse(self, response):
li_selector = response.xpath("//ol[@class='row']/li")
for one_selector in li_selector:
# 名称
name = one_selector.xpath("article[@class='product_pod']/h3/a/@title").extract()[0]
# 价格
price = one_selector.xpath("article[@class='product_pod']/div[@class='product_price']/p[1]/text()").extract()[0]
one_list = [name, price]
self.allBooks.append(one_list)
print(self.allBooks)
# 下一页
next_url = response.xpath('//li[@class="next"]/a/@href').extract()[0]
if next_url:
next_url = "http://books.toscrape.com/catalogue/category/books_1/" + next_url
yield Request(next_url)
进而可以进入start.py文件来运行。
整个项目执行起来,首先会调用start_requests(self)方法,初始请求,用来获取起始的url,然后调用scrapy中的Request(url)向网站生成一个请求,并使用yield将请求返回(yield会将请求返回回去并继续执行该函数余下的部分,但return的用法就不会继续执行余下的部分,这就是二者的区别),请求发送完以后就会向目标网站爬取数据,所以自动调用parse(self,response)方法,服务器就会将数据的对象给response,故response是一个对象,该对象有一个方法自带xpath()方法用来解析数据。
本章讲了使用Spider爬取数据,下一章会记录使用Item实现数据的封装。
作者:坚持就是胜利
链接:https://www.pythonheidong.com/blog/article/260059/e82c5f5bc5ad26366cb3/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!