mysql只插入了2000多条数据,有多个城市无法访问?

来源:3-3 Python爬虫实战总结

weixin_慕田峪4125453

2019-11-22

图片描述
如第一张图片所示,在获取多个城市的信息时,貌似都被识别出是爬虫,故多个城市的信息都无法下载下来。
初步怀疑为handle_request这个方法中的 if ‘频繁’ in response.text:根本没有被执行,可能是网页采取了其它反爬手段。

图片描述
如第二张图所示,只插入了39条信息到mysql当中。
初步怀疑,老师所撰写的mysql插入语句不够完善,导致有大部分信息根本无法插入。

写回答

1回答

weixin_慕田峪4125453

提问者

2019-11-24

"""
    1.先在mysql那里创建数据库lagou
    2.然后要执行这个文件,不然的话,不会创建数据库
"""
from sqlalchemy import create_engine, Integer,String,Float
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column


#创建数据库的连接,根据网上,要做修改
# engine = create_engine("mysql+pymysql://root:root@localhost:3306/lagou?charset=utf8")
engine = create_engine("mysql+mysqlconnector://root:root@localhost:3306/lagou?charset=utf8")
#操作数据库,需要我们创建一个session
Session = sessionmaker(bind=engine)

#声明一个基类
Base = declarative_base()

class Lagoutables(Base):
    #表名称
    __tablename__ = "lagou_data"
    #id,设置为主键和自动增长
    id = Column(Integer,primary_key=True,autoincrement=True)
    #岗位ID,非空字段
    positionID = Column(Integer,nullable=True)
    # 经度
    longitude = Column(Float, nullable=False)
    # 纬度
    latitude = Column(Float, nullable=False)
    # 岗位名称
    positionName = Column(String(length=50), nullable=False)
    # 工作年限
    workYear = Column(String(length=20), nullable=False)
    # 学历
    education = Column(String(length=20), nullable=False)
    # 岗位性质
    jobNature = Column(String(length=20), nullable=True)
    # 公司类型
    financeStage = Column(String(length=30), nullable=False) # 原本为True
    # 公司规模
    companySize = Column(String(length=30), nullable=False) # 原本为True
    # 业务方向
    industryField = Column(String(length=30), nullable=False) # 原本为True
    # 所在城市
    city = Column(String(length=10), nullable=False)
    # 岗位标签
    positionAdvantage = Column(String(length=200), nullable=False) # 原本为True
    # 公司简称
    companyShortName = Column(String(length=50), nullable=True) # 原本为True
    # 公司全称
    companyFullName = Column(String(length=200), nullable=True) # 原本为True
    # 公司所在区
    district = Column(String(length=20), nullable=False) # 原本为True
    # 公司福利标签
    companyLabelList = Column(String(length=200), nullable=False) # 原本为True
    # 工资
    salary = Column(String(length=20), nullable=False) # 原本为True
    # 抓取日期
    crawl_date = Column(String(length=20), nullable=False)


if __name__ == '__main__':
    #创建数据表
    Lagoutables.metadata.create_all(engine)

    我特意修改了create_lagou_tables.py这个文件内部的一些部分,把原来老师设置为True非空的字段,改成了False之后。 从原来执行一次程序后只能够获取的100多条信息,变成如今能够找2000条信息。

单纯广州的可以爬取66条信息下来,然而去网页真正看,起码有30*15=450条信息,也就是说有90%的信息根本没有保存到mysql当中去

0
0

Python爬虫实战数据可视化分析

网站数据收集分析必备技能

3982 学习 · 115 问题

查看课程