本文着重介绍如何实现爬虫,pycharm的安装各位可以自行找相关资料下载安装,本文不再提供
打开pycharm,按照如图所示新建一个工程
按照自己的习惯自行设置文件工程所在的目录以及名字,本例中将该工程放在pycharm的安装目录下,工程名为spider_test 点击右下角Create按钮即创建成功,如图所示,红框中是该工程下主要的子目录和文件,是成功创建工程后自动生成的
这里简单介绍一下Scrapy,因为是面向小白,此处不过多介绍,感兴趣的小可爱们可以自行搜索了解哦
• scrapy 是一个功能非常强大的爬虫框架,它不仅能便捷地构建request请求,还有强大的 selector 能够方便地解析 response响应。 • 可以使用这个工具将爬虫程序工程化、模块化。 • scrapy是一个基于Twisted的异步处理框架,是纯python实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性也很强。
那么如何安装并且使用scrapy呢,稍安勿躁,请各位接着往下面看 首先我们需要在该工程下安装Scrapy 点击File->Setting,如图 找到Project: spider_test>Project Interpreter,点击Python Interpreter,在此处查看、下载、删除python库和包 来到如图所示画面,点击左上角的加号+ 出现如图所示窗口,在如图所示的搜索框中输入Scrapy,找到Scrapy库,点击左下角install安装按钮,进行安装,安装过程需要几分钟,请耐心等待提示安装成功。 安装其他需要的库: 按照上述安装Scrapy的方法,继续安装wheel、pywin32两个库,安装好后已安装库栏中显示如图:(查看已安装库中是否已经有如下几个库),都有了表示安装成功,可以进行下一步啦
在文件管理器中,找到Scrapy的安装目录,如图所示,一般就在之前创建的工程下(spider_test->venv->Scripts) 在该目录下进入cmd命令行窗口(直接在目录窗口键盘输入cmd加回车即可进入)
在命令行中输入如下指令加回车创建一个Scrapy工程,工程名为test1 出现如图所以回应表示创建成功 回到pycharm,在如下目录中有如下几个文件表示成功。可以进行下一步
在test1工程之下,新建一个名为begin.py文件,和scrapy.cfg在同一级目录下,操作如图所示 创建好后的情况如图所示
在刚刚创建好的begin.py文件中输入如下内容(可直接复制下面代码粘贴)
from scrapy import cmdline cmdline.execute("scrapy crawl bupt".split()) #bupt为爬虫的名字,在spider.py中定义
如图所示
复制下面的代码将原内容全部覆盖
import scrapy class MyItem(scrapy.Item): # define the fields for your item here like: school = scrapy.Field() link = scrapy.Field()
粘贴时出现如图所示提示,直接点击OK就行
在spiders目录下新建一个spider.py文件 在该文件中粘贴以下内容:(此处代码为核心部分,尽量读懂) 本爬虫爬取的是北京邮电大学官网中的一处,如图所示:
import scrapy from test1.items import MyItem #从items.py中引入MyItem对象 class mySpider(scrapy.spiders.Spider): name = "bupt" #爬虫的名字是bupt allowed_domains =["bupt.edu.cn/"] #允许爬取的网站域名 start_urls = ["https://www.bupt.edu.cn/yxjg1.htm"] #初始网站地址,即爬虫爬取的第一个网站 def parse(self, response): # 解析爬取的内容 item = MyItem() # 生成一个在items.py中定义好的Myitem对象,用于接收爬取的数据 for each in response.xpath("/html/body/div/div[2]/div[2]/div/ul/li[4]/div/ul/*"):#用xpath来解析html,div标签中的数据,就是我们需要的数据。 item['school'] = each.xpath("a/text()").extract() #学院名称在text中 item['link']= each.xpath("a/@href").extract() #学院链接在href中 if (item['school'] and item['link']): # 去掉值为空的数据 yield(item) # 返回item数据给到pipelines模块
修改好的如图所示:
打开如下图所示的pipelines.py文件 将下面的代码复制粘贴进去覆盖原内容:
import json class MyPipeline(object): def open_spider(self,spider): try: self.file = open('MyData.json',"w",encoding="utf-8") except Exception as err: print(err) def process_item(self,item,spider): dict_item = dict(item) #生成字典对象 json_str = json.dumps(dict_item,ensure_ascii=False) + "\n"#生成json串 self.file.write(json_str) return item def close_spider(self,spider): self.file.close() #关闭文件
继续点击ok
再文件代码中找到如图所示代码(大概再65行~67行),将其取消注释,并将test1Pipeline改成MyPipeline
点击ok 修改后如图所示:
前面所有准备工作都已经准备好了,万事俱备只欠运行,此时是不是迫不及待地想运行,看效果了呢 但是还差一步哦,心急出不了热豆腐,为什么这么说呢,别着急,接着往下操作 运行之后,此时文件出现报错 解决办法:接着按照图操作: 将如下框中内容修改成 D:\Pycharm\PyCharm 2020.3.4\spider_test\venv\Scripts\test1\begin.py 其实就是将其中的\test1\spiders删除,再将spider.py改成begin.py 点击ok,修改成功,成功后右上角变成这样,然后点击运行标志运行 出现下图所示红色字体表示运行成功
然后可以看到此处已经生成了一个MyData.json文件,使用pycharm或者记事本打开此文件,即可看到你的成果啦 效果如下:
恭喜你,到此,一个初学者爬虫你已经运行成功啦,本文面向纯爬虫小白,因此只介绍了操作过程,所有代码都是现成的,想进一步学习爬虫的相关知识,只会这一些肯定是远远不够的,希望大家可以根据上面的操作,把自己不懂的地方逐一去了解,相信你能进步的更多。喜欢我的文章话可以点赞加关注支持一下博主哇,博主一定感谢万分,对于上述有什么不懂的地方,也欢迎评论区留言,我一定积极尽自己所能热心回答