0°

高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库

内容预览:
  • 原文始发于微信公众号(Python绿色通道):高级爬虫(三):使用Scrapy爬...~
  • 但这种方式比较容易被封ip,总是提示操作太频繁,从而爬取不到正确的数据~
  • 最后 项目源码地址:https://github.com/pythonchannel/lagouSpider 好...~

原文始发于微信公众号(Python绿色通道):高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库


最近更新文章比较克制,因为做公众号有自己的价值观「每次更新尽量给读者提供价值而不是消费读者」公众号立足于原创,内容尽量做到系统化,结构化,立体化,旨在让读者能直接能过我的教程来循序渐进的去提升自己。

之前我们讲到了使用Scrapy,今天我们使用Scrapy来作一个项目实战。Scrapy详细教程可以看前面两篇:

高级爬虫(一):Scrapy爬虫框架的安装
高级爬虫( 二):Scrapy爬虫框架初探

今天我们是用Scrapy来爬取拉勾网的Python招聘信息。 这个项目刚刚在我的知识星球与球友们已经做过了!这里拿出来总结一下。

1.打开拉勾网,这里获取数据的方式有两种

  • 方式一:在首页通过输入Python可以从搜索结果中得到Python招聘信息,然后可以查看到这种获取数据的方式是发起Post请求。

直接搜索Python职位:

高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库

https://www.lagou.com/jobs/list_Python?labelWords=&fromSearch=true&suginput=

爬取拉钩数据的办法有人使用了post发送数据请求,结果总是提示操作太频繁,我没有采用这种方式.

  • 方式二:而我们直接在首页选择技术,找到Python模块,打开网页,我们可以看到发起的是Get请求,进一步我们可以发现这里是发我们发现这个数据与我们扫索到的Python得到的数据是一样的。



    高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库


    高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库

直接选Python模块,发现数据是有规律的:
https://www.lagou.com/zhaopin/Python/2/?filterOption=3
https://www.lagou.com/zhaopin/Python/3/?filterOption=3

1.1两种方式比较:

方式一直接通过发起Post请求,然后得到json数据,然后解析数据。但这种方式比较容易被封ip,总是提示操作太频繁,从而爬取不到正确的数据。可以登录设置Cookie,然后能访问到一些数据,但不是很全,我最终没有使用这种方式,也许有其它的朋友有解决办法,也希望能与我探讨一下。

方式二是发起Get请求,然后用xpath解析字段来获取数据,这种办法比较笨,但至少我们能把数据完整的采集出来,而我今天也是说的这种方式。

2. 思路分析

  • 创建Scrapy项目:在命令行中输入 scrapy startproject lagouSpider 「前提是你已经安装好了Scrapy环境」,创建项目完毕后可以进行下一步。

  • 开始爬取数据: 在刚才创建的lagouSpider文件夹中的spiders文件夹中创建爬取数据的文件,这里是入口。

class lagou_crawl(scrapy.Spider):
   name = "lagou" # 这个命名是待会我们启动爬虫的名字,是唯一的!
   allowed_domains = ['lagou.com'] #这个是我们爬取的站点,
   start_urls = [
       'https://www.lagou.com/zhaopin/Python/{}/?filterOption=3'.format(i) for i in range(1, 31)
   ] # 这里是我们开始爬取的网站

   def parse(self, response):
  • 定义爬取的字段:在刚才创建的lagouSpider文件夹中的items文件中存储自己爬取的字段。

    ```Python
    class LagouspiderItem(scrapy.Item):
       # define the fields for your item here like:
       # name = scrapy.Field()
       job_title = scrapy.Field()
       job_address = scrapy.Field()
       job_money = scrapy.Field()
       job_company = scrapy.Field()
       job_fintance = scrapy.Field()
       pass
    ```
  • 把爬取的字段存入到数据库:在刚才创建的lagouSpider文件夹中的pipelines文件中写入数据到数据中。 这里需要注意把settings文件中的 ITEM_PIPELINES 注释去掉。

class LagouspiderPipeline(object):
   def __init__(self):
       self.db = DBTool()

   def process_item(self, item, spider):
       job_title = item['job_title']
       job_address = item['job_address']
       job_money = item['job_money']
       job_company = item['job_company']
       job_fintance = item['job_fintance']

       sql = "insert into lagou_data(`title`,`address`,`money`,`company`,`fintance`) values('{}','{}','{}','{}','{}')".format(job_title,job_address,job_money,job_company,job_fintance)

       print('--------------------{}'.format(sql)) # 这里一定要打印sql来看看sql是否正确,
       self.db.inset_data(sql)
       return item
  • 设置好配置文件:

# Mysql数据库的配置信息
MYSQL_HOST = '192.168.1.250'
MYSQL_DBNAME = 'crawler_data'  # 数据库名字,请修改
MYSQL_USER = 'root'  # 数据库账号,请修改
MYSQL_PASSWD = '123456'  # 数据库密码,请修改
MYSQL_PORT = 3306  # 数据库端口,在dbhelper中使用

以上几步弄好后,我们开始运行我们的项目了

3.运行项目

在我们刚才创建的项目文件夹运行我们的项目。 打比方我们的项目路径是: G:scrapy_projectlagouSpider  那么我们应该在这个lagouSpider文件夹下运行命令行 scrapy crawl lagou 这个lagou是我们刚才创建爬虫入口文件的name。

如果运行顺利的话,可以得到数据。效果图如下。


高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库

高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库

最后

项目源码地址:https://github.com/pythonchannel/lagouSpider

好了数据是爬出来了,但发现爬取的时候,获取数据比较慢,这是因为拉勾反爬机制是比较厉害的,我故意把settings文件中 DOWNLOAD_DELAY 时间改长了,如果时间比较短很容易被反爬虫数据获取得就不够完整,如何更快爬取数据,这是我要做的下一个课题!貌似加上cookie池与挂上代理ip,可以完美解决这个问题!

小技巧

  1. 可以在Pycharm中右边发现database 然后可以添加Mysql ,这是我的星球中球友发现的!

  2. 安装Scrapy,安装scrapy挺麻烦的,需要各种依赖包,我直接在Pycharm中来安装scrapy一键搞定:

  1. 我们在安装Scrapy的时候总是遇到各种各样的麻烦,我今天又遇到麻烦了。

  2. 突发奇想我能不能在Pycharm上来安装,结果安装成功了,因为Pycharm安装的时候会自动加上安装Scrapy的依赖包.

  3. 安装成功后,我们把Pycharm的setting中Scrapy安装路径放到我们的环境变量中,然后直接cmd运行,完美解决问题!


高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库


推荐阅读

高级爬虫(一):Scrapy爬虫框架的安装

高级爬虫( 二):Scrapy爬虫框架初探

用Python爬视频超级简单的!

使用Python开发你的第一个服务器程序

用Xpath,bs4,正则三种方式爬51job

用Python打造属于自己的搜索引擎

一起来Python项目实战,约吗?

用Python来找你喜欢的妹子(二)

用Python来找合适的妹子(一)

使用Python自动化发布文章(二)

使用Python自动化发布文章:(一)

Python爬虫:使用Python动态爬取冯大辉老师微博,再用词云分析

Python爬虫:动态爬取QQ说说并生成词云,分析朋友状况

Python爬虫:学习Selenium并使用Selenium模拟登录知乎

Python爬取大量数据时,如何防止IP被封

Python爬虫:现学现用xpath爬取豆瓣音乐


的Python之旅

高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库

长按,识别二维码,关注公众号



目前50000+人已关注加入我们

高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库

高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库


公众号回复:Flask 可以获取一本Flask Web开发电子书


最后 :大家也可以公众号主页上回复 加群 拉你进群学习,一个纯粹的Python学习环境!


和大佬一起学习网络安全知识

以上就是:高级爬虫(三):使用Scrapy爬取拉勾网数据并写入数据库 的全部内容

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢^^
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论