栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

运用scrapy爬取智联网

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

运用scrapy爬取智联网

学习目标:
运用scrapy框架

将爬取的数据保存到数据库


学习内容:

1、掌握 python基本语法

2、运用pychrame开发环境
3、 获取数据

4、保存到数据库


学习时间:


1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

大家好丫!我是honey,我今天想要和大家分享一下我大二实训是所搞的项目。嘿嘿就是爬取网站的数据。我想分享一下我的代码。

大家应该都知道scrapy框架吧,这个框架用来爬虫真的是绝绝子,首先在setting里面对所要运用的函数进行设置。

这里我就只贴出数据库的设置,其他该打开的我就不细说了哈,大家都会。

#数据库的相关设置
MYSQL_HOST = '127.0.0.1'
MYSQL_USER = 'root'
MYSQL_PASSWORD = '1234'
MYSQL_DATAbase = 'liepin_job'
MYSQL_TABLE_NAME = 'liepin_job'
#我的use_agent

2.在items中定义所需要的参数

import scrapy


class LiepinspiderItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    positionName = scrapy.Field()  # 职位名
    companyName = scrapy.Field()  # 公司名
    salary = scrapy.Field()  # 薪资
    jobMsg = scrapy.Field()  # 工作信息
    positionMsg = scrapy.Field()  # 职位信息
    address = scrapy.Field()  # 工作地址
    link = scrapy.Field()  # 工作详情连接

3.在pipelines中写爬取网站的代码

from itemadapter import ItemAdapter

import pymysql
import re
class MysqlPipeline(object):
    # from_crawler 中的参数crawler表示这个项目本身
    # 通过crawler.settings.get可以读取settings.py文件中的配置信息
    @classmethod
    def from_crawler(cls, crawler):
        cls.host = crawler.settings.get('MYSQL_HOST')
        cls.user = crawler.settings.get('MYSQL_USER')
        cls.password = crawler.settings.get('MYSQL_PASSWORD')
        cls.database = crawler.settings.get('MYSQL_DATAbase')
        cls.table_name = crawler.settings.get('MYSQL_TABLE_NAME')
        return cls()

        # open_spider表示在爬虫开启的时候调用此方法(如开启数据库)
    def open_spider(self, spider):
        # 连接数据库
        # self.db = pymysql.connect(self.host, self.user, self.password, self.database, charset='utf8')
        self.db = pymysql.connect(host="127.0.0.1", user="root", password="1234", database="liepin_job",charset="utf8mb4")
        self.cursor = self.db.cursor()
    def process_item(self, item, spider):
        # 向表中插入爬取的数据  先转化成字典
        data = dict(item)
        table_name = self.table_name
        keys = ','.join(data.keys())
        values = ','.join(['%s'] * len(data))
        sql = 'insert into %s (%s) values (%s)' % (table_name, keys, values)
        self.cursor.execute(sql, tuple(data.values()))
        self.db.commit()
        return item


class GetLiepinPipeline(object):

    def table_exists(self, con, table_name):  # 这个函数用来判断数据表是否存在
        sql = "show tables;"
        con.execute(sql)
        tables = [con.fetchall()]
        table_list = re.findall('('.*?')', str(tables))
        table_list = [re.sub("'", '', each) for each in table_list]
        if table_name in table_list:
            return 1
        else:
            return 0
class StripPipeline(object):
    def process_item(self, item, job_detail):

        item['jobMsg'] = ''.join([i.strip() for i in item['jobMsg']]).strip()
        item['positionMsg'] = ''.join([i.replace('rn', '') for i in item['positionMsg']]).strip()

        return item

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/275790.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号