当前位置:   article > 正文

Python、pycharm的安装与配置,并使用scrapy爬虫框架爬豆瓣数据_安装bookspider库

安装bookspider库

1、安装python
下载地址:(确定自己电脑的操作系统类型,下载相应的安装程序包)
https://www.python.org/downloads/windows/

如果安装时没有选择把安装路径添加进环境变量中,要手动添加修改环境变量中path的值;
环境变量有没有添加成功,直接可以cmd进入控制台,执行python开头的命令,如果不能识别命令,则说明环境变量没有把python的安装路径添加进去,可以右击我的电脑–属性–高级系统设置–环境变量–path,加入Python37的安装路径
我的安装路径C:\Users\760\AppData\Local\Programs\Python\Python37
(我直接点下一步,它给我装C盘了,而且环境变量也没有自动加进去,我是自己加进去的)

确认python时候安装好,并且能正常使用,直接在cmd 输入python,可以看到python的版本就说明可以使用了
python安装好应该是没有启动的桌面快捷键的,要从程序里面看,然后点击生成的三个应用(以及一个帮助文档),都可以进入特定的python控制台操作面板

2、安装pycharm
不习惯使用控制面板操作,并且觉得使用IDE玩更加好玩,就安装了JetBrains PyCharm Community Edition 2019.2.2 x64,感觉和java开发工具IDEA超级像,简直是一毛一样
下载地址:(我直接点下一步安装,有一个需要勾选的地方,我好像全勾了,没什么影响)
http://www.jetbrains.com/pycharm/download/#section=windows

3、安装pip
不知道安装过没,就直接在cmd查看pip版本

查看pip版本
pip --version

出现不能识别pip,有可能是没安装,也可能是环境变量没有配好
就可以试试:

升级pip
python -m pip install --upgrade pip

如果还是不能识别,就检查环境变量,没配的就配好path:
pip环境配置(即pip.exe的路径,在Python37安装路径下)
环境变量Path添加:C:\Users\760\AppData\Local\Programs\Python\Python37\Scripts
(要配好环境变量cmd才能识别pip命令)

4、安装Scrapy
直接用pip就可以安装Scrapy,Scrapy是python的一种框架

pip install scrapy
(如果报错一系列happy:*提示:如果安装过程中出现报错pip版本太低,即刻升级pip)

5、安装wheel
直接用pip安装
pip install wheel

6、安装pywin32
我也不知道有什么用,之前看别人的教程有这个
pip install Pillow

安装好上面这些才好创建实例测试,一次性都安装好没什么影响,都是常用的命令与安装内容

其他:
创建虚拟Python环境
pip install virtualenv

这个部分只是简单介绍,了解一下大概的步骤(1)~(6),无具体源码:
在pycharm界面中打开 View --> Tool Windows --> Terminal
(1)验证scrapy是否成功安装:在Terminal中输入 scrapy 看看是否显示scrapy信息

(2)创建scrapy项目工程
在Terminal中输入:
#scrapy startproject + 自定义的项目名称
scrapy startproject ITcast

文件说明:
scrapy.cfg:项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。
(真正爬虫相关的配置信息在settings.py文件中)
items.py:设置数据存储模板,用于结构化数据,如:Django的Model
pipelines.py:数据处理行为,如:一般结构化的数据持久化
settings.py:配置文件,如:递归的层数、并发数,延迟下载等
spiders:爬虫目录,如:创建文件,编写爬虫规则
注意:一般创建爬虫文件时,以网站域名命名

(3)创建写爬虫的文件
#scrapy genspider +名称 + ‘网站’
#建立爬虫文件
scrapy genspider itcast “itcast.cn”

(4)生成itcast.py后,添加需要的内容

(5)按规则修改items.py,里面的内容一般用作,规定爬虫具体的返回数据

(6)代码写完,在Terminal中输入命令运行项目,得到爬到的数据
scrapy crawl itcast -o itcastInfo.csv

按照以下的具体操作,可以成功爬到数据,最好先按照完整过程一毛一样操作下,先成功抓到数据后,再自己琢磨爬自己想玩的东西,这叫做先学会走然后学会跑。

下面的内容是从别人那里拷过来的,自己按照他(感觉对python很了解)的操作,成功抓到了数据,很好玩

他抓的是豆瓣读书里面的数据

今天我们来看看如何用工程或者项目来进行Scrapy网络爬虫。
首先我们需要创建一个项目。

	scrapy startproject douban_book
  • 1

在命令行输入scrapy startproject + [项目名],这样会生成一个scrapy项目。

我这个项目的名称是douban_book。大家一看这个名字就知道,我待会要去爬取豆瓣网站图书的内容。

我们真正的爬虫程序是写在spiders/bookspider.py文件中。
bookspider.py是我自己创建的文件,其他的文件都是scrapy自己自动初始化好的。

其中item.py是配置爬虫具体返回的数据,待会我们在具体的例子中会看到如何定义自己需要返回的东西;

pipeline.py是配置具体的通道信息,settings.py是设置信息,爬虫大部分的配置信息都要在该文件中进行。

首先我们先编写item.py文件,该文件设置爬虫具体的返回数据。

    # -*- coding: utf-8 -*-
     
    # Define here the models for your scraped items
    #
    # See documentation in:
    # https://doc.scrapy.org/en/latest/topics/items.html
     
    import scrapy
       
    class DoubanBookItem(scrapy.Item):
        # define the fields for your item here like:
        # name = scrapy.Field()
        name = scrapy.Field()
        price = scrapy.Field()
        publisher = scrapy.Field()
        ratings = scrapy.Field()
        edition_year = scrapy.Field()
        author = scrapy.Field()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

这里我们需要返回具体某本书的名字,作者,价格,评分等信息,
scrapy已经为我们定义好了一个item对象,
我们只要使用Scrapy.Field()这个域就可以定义我们想要返回的字典类型中的“k”值,
接下来是最主要的bookspider.py文件了。

    import scrapy
    from douban_book.items import DoubanBookItem
         
    class BookSpider(scrapy.Spider):
    	"""docstring for BookSpider"""
    	name = 'douban-book'
    	allowed_domain = ['douban.com']
    	start_urls = ['https://book.douban.com/top250']
     
    	def parse(self, response):
    		yield scrapy.Request(response.url, callback = self.parse_page)
     
    		for page in response.xpath('//div[@class="paginator"]/a'):
    			link = page.xpath('@href').extract()[0]
    			yield scrapy.Request(link, callback = self.parse_page)
     
    	def parse_page(self, response):
    		for item in response.xpath('//tr[@class="item"]'):
    			book = DoubanBookItem()
    			book['name'] = item.xpath('td[2]/div[1]/a/@title').extract()[0]
    			book['ratings'] = item.xpath('td[2]/div[2]/span[@class="rating_nums"]/text()').extract()[0]
    			# book['ratings'] = item.xpath('td[2]/div[2]/span[2]/text()').extract()[0]
    			book_info = item.xpath('td[2]/p[1]/text()').extract()[0]
    			book_info_contents = book_info.strip().split(' / ')
    			book['author'] = book_info_contents[0]
    			book['publisher'] = book_info_contents[1]
    			book['edition_year'] = book_info_contents[2]
    			book['price'] = book_info_contents[3]
    			yield book
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

这个文件的内容是具体的爬虫信息,先导入我们刚才定义的DoubanBookItem类,
下面就要用这个类来具体实例化一个对象以存放返回的信息。

定义一个爬虫类BookSpider,在这个类中定义了爬虫的名字“douban-book”,
之后我们定义了一个容许访问的域,就是告诉爬虫可以去爬这个域中的内容。然后定义了爬虫开始的起始网页。

接下来就是定义解析函数parse了,parse函数做了两件事情,
一个是发送当前网页(第一页)的请求,
另一个是读出所有从第2页开始到最后一页的网络请求,然后向每一个网页发出请求。

在parse函数中不具体解析数据,解析数据的工作给了每个请求中的回调函数进行。
这个回调函数就是下面定义的parse_page函数。

parse_page函数是我们真正的爬虫数据函数,拿到response之后就对response的每个标签进行解析,然后放在实例化后的book对象中。

这里有一个小小的问题,就是某一本书中作者,出版社,时间和价格是在一个string中,因此在拿到这个string后需要用split方法拆开,然后放入book的不同“k”中。最后就是返回book了。

程序完成后我们运行一下,返回到windows的命令行,找到主目录,在Terminal中输入命令运行

scrapy crawl douban-book -o bookInfo.csv
  • 1

我第一次运行这个命令后,返回了403状态码,关于状态码的问题,今后如果有时间我会单独写一篇文章来说明,这个是HTTP协议相关的内容,东西也比较多,这里只是简单告诉大家403状态码的意思就是网站拒绝了我的请求。这是由于有些网站是不容许进行爬虫的,它发现你是爬虫后会拒绝掉你的请求。解决办法就是在settings.py文件中加入一句话

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
  • 1

这句话的意思就是把我们的请求伪装成一个浏览器以骗过网站的检查,当然伪装有很多办法,这个只是其中的一种。关于伪装成浏览器的内容也是和HTTP协议相关的,这里不再多说。

好了,加入上面那句代码后我们再运行

scrapy crawl douban-book -o bookInfo.csv
  • 1

后就会得到我们想要的东西了,下面会显示返回结果。
这里要说明一下,我是比较喜欢返回csv文件的,一来是因为这个返回结果可以直接在sublime中查看,中文也可以正常显示。

另一个原因我后台使用MySQL数据,csv文件可以直接被MySQL数据库读取。

这个实例操作的原文链接:https://blog.csdn.net/Wilson_Iceman/article/details/79179294

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/624538
推荐阅读
相关标签
  

闽ICP备14008679号