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当中去
00
相似问题