0.windows安装scrapy
1、安装wheel: 在控制台输入pip install wheel即可自动完成安装 2、安装lxml: 到 https://www.lfd.uci.edu/~gohlke/pythonlibs/,往下拉找到 lxml,下载适合自己电脑 操作系统及python版本的.whl文件。cp27、cp35等代表python版本2.7、3.5,win32代表 32位windows操作系统,win_amd64代表64位操作系统。 下载完成后,右键点击文件-属性-安全-对象名称,可以复制到文件地址。复制完成后回到控制 台,输入“pip install 右键粘贴地址",然后按回车即可完成安装。 3、安装PyOpenssl 到 https://pypi.python.org/pypi/pyOpenSSL#downloads ,往下拉找到下面文件后下 载。下载完成后同安装lxml的方法,对该PyOpenssl的whl文件进行安装. windows系统下的scrapy框架安装及测试 4、安装Twisted 到 https://www.lfd.uci.edu/~gohlke/pythonlibs/#Twisted,往下拉找到Twisted,下载 适合自己电脑操作系统及python版本的.whl文件。同安装lxml的方法将Twisted安装完成。 5、安装Pywin32 到 https://sourceforge.net/projects/pywin32/files/pywin32/Build 220/,下载适合自 己电脑操作系统及python版本的文件,下载完成后双击即可开始安装。程序会自动定位 python的目录,所以不用自己调整安装设置,一直下一步就行了。 6、安装scrapy 进行完1-5步后,安装scrapy就很简单了,在控制台输入 pip install scrapy即可完成安装。
1.No module named win32api
pip install pypiwin32
2.文件夹下的文件找不到,或者No module named 'scrapy.pipelines' 或者no module named ×××.items?
scrapy项目处于pycharm项目的子项目,所以pycharm找不到items 。我的解决办法是在scrapy项目上右键-》make_directory as -->sources roo如果项目文件夹变这个颜色就可以了。
3.No module named PIL
pip install pillow
4.下载图片到本地、并提取本地保存地址
1)在settings.py中打开 ITEM_PIPELINES 的注释,在 ITEM_PIPELINES 中加入 ITEM_PIPELINES = { 'spider_first.pipelines.SpiderFirstPipeline': 300, 'scrapy.pipelines.images.ImagesPipeline':5, #后面的数字代表执行优先级 ,当执行pipeine的时候会按照数字由小到大执行 } 2)settings.py中加入 IMAGES_URLS_FIELD ="image_url" #image_url是在items.py中配置的网络爬取得图片地址 #配置保存本地的地址 project_dir=os.path.abspath(os.path.dirname(__file__)) #获取当前爬虫项目的绝对路径 IMAGES_STORE=os.path.join(project_dir,'images') #组装新的图片路径
5.python 安装mysql模块
windows
pip install mysqlclient
ubuntu
sudo apt-get install libmysqlclent-dev
centos
sudo yum install python-devel mysql-devel
6. IndentationError: unindent does not match any outer indentation level
方法名开头的时候别用空格,用tab符号
7. 连接池的代码
from twisted.enterprise import adbapi import MySQLdb.cursors class MysqlTwistedPipline(object): #通过连接池的方式 def __init__(self,dbpool): self.dbpool = dbpool @classmethod def from_settings(cls, settings): dbparms = dict( host=settings["MYSQL_HOST"], db=settings["MYSQL_DBNAME"], user=settings["MYSQL_USER"], passwd=settings["MYSQL_PASSWORD"], charset=settings["MYSQL_CHARSET"], cursorclass=MySQLdb.cursors.DictCursor, use_unicode=settings["MYSQL_USE_UNICODE"], ) dbpool = adbapi.ConnectionPool("MySQLdb", **dbparms) return cls(dbpool) def process_item(self, item, spider): # 使用twisted将mysql插入变成异步执行 query = self.dbpool.runInteraction(self.do_insert, item) query.addErrback(self.handle_error, item, spider) # 处理异常 def handle_error(self, failure, item, spider): # 处理异步插入的异常 print(failure) def do_insert(self, cursor, item): insert_sql = """ insert into jobbole(post_url_id,post_url,re_selector,img_url,img_path,zan,shoucang,pinglun,zhengwen,riqi,fenlei) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) """ cursor.execute(insert_sql, ( item["post_url_id"], item["post_url"], item["re_selector"], item["img_url"][0], item["img_path"], item["zan"], item["shoucang"], item["pinglun"], item["zhengwen"], item["riqi"], item["fenlei"]))
8. 验证码爬虫的解决方案
1.如果一个网站有下载验证码的功能,对于我这种还没深入了解机器学习,只能通过人工的方式来进行解决验证码的问题,咱们就进行手动的验证码解析,通过下载图片,然后根据图片手动的输入坐标或者验证码来完成,本质的目的是为了能够完成登录打入敌人的内部,吸收他们里面的养分 2.如果是针对https://www.zhihu.com/captcha.gif?r=1514042860066&type=login&lang=cn 记住要跟登录的用户的获取的通过session来进行 header这边直接github很多 我就不粘贴了 session = requests.session() response = session.get("https://www.zhihu.com/",headers=header) 图片类别的下载我遇到的坑是 with open(file_name, 'wb') as f: f.write(response.content) f.close() 记住如果网页打开直接是图片直接使用response.content 而不是response.text.ecode() 对于一些网站返回的是 unicode json格式看的时候很不爽 解决方案是: print(response.text.encode('latin-1').decode('unicode_escape'))
9. 出现主键冲突的时候解决ON DUPLICATE KEY UPDATE(只限mysql)
insert into zhihu_question (zhihu_id,topics,url,title,content,creat_time,update_time,answer_num,comments_num,watch_user_num,click_num,crawl_time,crawl_update_time) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ON DUPLICATE KEY UPDATE comments_num=VALUES(comments_num),watch_user_num=VALUES(watch_user_num),click_num=VALUES(click_num)
10. srcapy items方法很强大通过反向调用的方式就可以动态控制
items
class ZhihuQuestionItem(scrapy.Item): zhihu_id = scrapy.Field() topics = scrapy.Field() url = scrapy.Field() title = scrapy.Field() content = scrapy.Field() creat_time = scrapy.Field() update_time = scrapy.Field() answer_num = scrapy.Field() comments_num = scrapy.Field() watch_user_num = scrapy.Field() click_num = scrapy.Field() def get_insert_sql(self): insert_sql = """ insert into zhihu_question (zhihu_id,topics,url,title,content,creat_time,update_time,answer_num,comments_num,watch_user_num,click_num,crawl_time,crawl_update_time) VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) ON DUPLICATE KEY UPDATE comments_num=VALUES(comments_num),watch_user_num=VALUES(watch_user_num),click_num=VALUES(click_num) """ zhihu_id = self["zhihu_id"][0] topics = ",".join(self["topics"]) url = "".join(self["url"]) title = "".join(self["title"]) content = "".join(self["content"]) creat_time = datetime.datetime.now().strftime(SQL_DATETIME_FORMAT) update_time = datetime.datetime.now().strftime(SQL_DATETIME_FORMAT) answer_num = self["answer_num"][0] comments_num = get_nums(self["comments_num"][0]) watch_user_num = self["watch_user_num"][0] click_num = self["watch_user_num"][1] crawl_time = datetime.datetime.now().strftime(SQL_DATETIME_FORMAT) crawl_update_time =datetime.datetime.now().strftime(SQL_DATETIME_FORMAT) params = (zhihu_id,topics,url,title,content,creat_time,update_time,answer_num,comments_num,watch_user_num,click_num,crawl_time,crawl_update_time) return insert_sql,params
pipelines.py
class MysqlTwistedZhihuPipline(object): #通过连接池的方式 def __init__(self,dbpool): self.dbpool = dbpool @classmethod def from_settings(cls, settings): dbparms = dict( host=settings["MYSQL_HOST"], db=settings["MYSQL_DBNAME"], user=settings["MYSQL_USER"], passwd=settings["MYSQL_PASSWORD"], charset=settings["MYSQL_CHARSET"], cursorclass=MySQLdb.cursors.DictCursor, use_unicode=settings["MYSQL_USE_UNICODE"], ) dbpool = adbapi.ConnectionPool("MySQLdb", **dbparms) return cls(dbpool) def process_item(self, item, spider): # 使用twisted将mysql插入变成异步执行 query = self.dbpool.runInteraction(self.do_insert, item) query.addErrback(self.handle_error, item, spider) # 处理异常 def handle_error(self, failure, item, spider): # 处理异步插入的异常 print(failure) def do_insert(self, cursor, item): insert_sql,params = item.get_insert_sql() cursor.execute(insert_sql, params)
9. 'dict' object has no attribute 'has_key' Python3以后删除了has_key()方法
if adict.has_key(key1): 修改为: if key1 in adict:
10. 爬虫Max retries exceeded with url
页面中的requests不要直接都requests.post 尽量统一requests.session()然后运行完关闭。s.keep_alive = False
s = requests.session() s.keep_alive = False
11. 阿里云centos安装python3最牛逼的教程(make编译的是深坑啊,建议用yum)
sudo yum install epel-release sudo yum install python34 wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py python3 get-pip.py pip3 -V
相关推荐
数学建模学习资料 神经网络算法 参考资料-Matlab 共26页.pptx
happybirthday2 升级版生日祝福密码0000(7).zip
本项目是一个基于SSM框架的税务门户网站实现,结合了Vue技术,旨在提供一个全面的税务信息管理平台。该项目主要功能包括税务信息查询、税务申报、税务政策浏览及用户管理等多个模块。通过这些功能,用户可以方便地查询和管理税务相关的各类信息,同时也能及时了解最新的税务政策和规定。 项目采用SSM框架,即Spring、Spring MVC和MyBatis,这三者的结合为项目提供了强大的后端支持,确保了数据的安全性和系统的稳定性。前端则采用Vue.js框架,以其高效的数据绑定和组件化开发模式,提升了用户界面的响应速度和用户体验。 开发此项目的目的不仅是为了满足计算机相关专业学生在毕业设计中的实际需求,更是为了帮助Java学习者通过实战练习,深入理解并掌握SSM框架的应用,从而在实际工作中能够更好地运用这些技术。
php7.4.33镜像7z压缩包
本项目是一个基于Java的珠宝购物网站系统,采用SSM框架进行开发,旨在为计算机相关专业学生提供一个实践平台,同时也适合Java学习者进行实战练习。项目的核心功能涵盖商品展示、用户注册登录、购物车管理、订单处理和支付系统等。通过这一系统,用户可以浏览各类珠宝商品,包括详细的商品描述、高清图片和价格信息,同时能够方便地添加商品至购物车,并进行结算和支付操作。 在技术实现方面,项目运用了Spring、Spring MVC和MyBatis三大框架,确保系统的稳定性和扩展性。Spring负责业务逻辑层,提供依赖注入和面向切面编程的支持;Spring MVC则处理Web层的请求和响应,实现MVC设计模式;MyBatis作为持久层框架,简化了数据库操作。 此外,项目采用JSP技术进行前端页面展示,结合HTML、CSS和JavaScript等技术,为用户提供友好的交互界面。
基于java的高校大学生党建系统设计与实现.docx
本项目是一个基于Python-Django框架开发的疫情数据可视化分析系统,旨在为计算机相关专业的学生提供一个实践平台,同时也适用于需要进行项目实战练习的同学。项目集成了疫情数据的收集、处理、分析和可视化功能,为用户提供了一个直观、高效的数据分析环境。 在功能方面,系统能够自动抓取最新的疫情数据,包括确诊、疑似、治愈和死亡人数等关键指标。数据处理模块则负责清洗和整理这些数据,以确保分析的准确性。分析模块采用了多种统计方法和机器学习算法,以揭示疫情的发展趋势和潜在模式。可视化模块则通过图表和地图等形式,直观地展示了分析结果,便于用户理解和分享。 项目的开发框架选择了Django,这是一个高级Python Web框架,它鼓励快速开发和清晰、务实的设计。Django的强大功能和灵活性,使得项目能够快速响应需求变化,同时保证了系统的稳定性和安全性。
果树领养计划.docx
环境说明:开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat 开发软件:eclipse/myeclipse/idea Maven包:Maven 浏览器:谷歌浏览器。 项目均可完美运行 基于Java的云平台信息安全攻防实训平台提供了以下核心功能: 1. **实训课程与项目**:平台提供了丰富多样的实训课程和项目,覆盖网络安全基础知识、漏洞挖掘与利用、渗透测试技术、安全防护策略等多个领域。 2. **在线学习模块**:学员可以通过在线学习模块观看教学视频、阅读文档资料,系统地学习信息安全知识。 3. **虚拟实验室环境**:平台提供虚拟实验室环境,学员可以在模拟的真实网络场景中进行攻防演练,包括漏洞扫描、攻击测试和防御措施的学习。 4. **教学管理功能**:教师可以创建和管理课程内容,制定教学计划,布置实训作业和考试任务。 5. **监控和统计功能**:教师可以实时了解学员的学习进度、实践操作情况和考试成绩,进行有针对性的指导和辅导。 6. **平台管理功能**:管理员负责用户管理、资源分配、系统安全维护等,确保平台稳定运行和实训环境的安全性。 7. **实时监控和评估**:系统具备实时监控和评估功能,能够及时反馈学生的操作情况和学习效果。 8. **用户认证和授权机制**:平台采用了严格的用户认证和授权机制,确保数据的安全性和保密性。 这些功能共同构建了一个功能丰富、操作便捷的实训环境,旨在提升学员的信息安全技能,为信息安全领域的发展输送专业人才。
基于GrampusFramework的轻量级单体RBAC权限管理系统
内容概要:本文档全面整理了软考(中级-软件设计师)的关键知识点,涵盖了计算复杂度、网络协议、数据结构、编程语言、数据库理论、软件测试、编译原理、设计模式、安全协议等多个方面的内容。具体涉及环路复杂度计算、SSH协议、数据字典与数据流图、对象的状态与数字签名、编程语言分类、海明码、著作权法、物理层与数据链路层设备、归纳法与演绎法、模块间耦合、能力成熟度模型集成、配置管理与风险管理、数据库关系范式、内存技术、计算机网络端口、路由协议、排序算法、中间代码、软件测试类型、编译器各阶段任务、设计模式、耦合与内聚、计算机病毒种类等。 适用人群:备考软考(中级-软件设计师)的技术人员,尤其是有一定工作经验但希望进一步提升自身技能和知识的IT从业人员。 使用场景及目标:帮助考生系统梳理考试重点,理解和掌握软件设计师应具备的专业知识和技术。适合考前复习和巩固基础知识。文档还可以作为参考资料,用于日常工作中遇到相关问题时查阅。 其他说明:本文档不仅提供了丰富的知识点,还附带了一些关键术语的定义和详细的解释,确保读者能够全面理解相关内容。建议在复习过程中结合实际案例进行练习,加深理解。
数学建模学习资料 神经网络算法 Hopfield网络 共58页.pptx
工作寻(JobHunter)是一款招聘信息整合的网站,目前固定的模板有拉勾网,中华英才网,前程无忧。工作寻可以在线通过关
本项目是基于Python实现的协同过滤音乐推荐系统,旨在为计算机相关专业学生提供一个完整的毕设实战案例。项目以协同过滤算法为核心,通过分析用户历史行为数据,为用户推荐符合其兴趣偏好的音乐。 主要功能包括用户兴趣建模、音乐推荐生成以及用户反馈机制。系统能够实时捕捉用户听歌行为,动态更新用户兴趣模型,从而更精准地推送个性化音乐推荐。同时,系统设计了友好的用户界面,使用户能够方便地获取推荐音乐,并通过反馈机制不断完善推荐算法。 在技术框架方面,项目采用了Python编程语言,借助scikit-learn等机器学习库实现协同过滤算法,并结合Flask框架搭建了Web服务,确保了系统的性能和稳定性。此项目的开发,不仅能够帮助学生深入理解协同过滤算法及音乐推荐系统的工作原理,还能提升其软件开发和项目管理能力。
微型餐饮补正备案材料通知书.docx
食品生产许可质量跟踪监督建议书.docx
基于django的音乐推荐系统.zip
如果让某人推荐Python技术书,请让他看这个列表很棒的 Python 书籍如果让某人推荐Python技术书,请让他看这个列表前言好的技术书籍可以帮助我们快速成长,大部分人新生儿或者少部分受益于经典的技术书籍。在「Python开发者」微信公号后台,我们经常能收到帮忙推荐书籍的消息。此类问题在@Python开发者微博和伯乐在线的Python小组讨论中也绝非耳熟能详。 7月3日,伯乐在线在「Python开发者」微信公号发起了一个讨论(注PC端无法看到大家的评论,需要关注微信公号后,从微信公号才可以看到),通过这个讨论话题,在评论中分享对自己有帮助的大量Python技术书籍。 (Python开发者)入门《Head First Python》+入门级+微信49票+豆瓣评分9.5推荐语**66**浅显易懂,编排的顺序特别,有大量插图、对话,感觉枯燥古心通熟易懂,大量の图片,不会觉得枯燥,是一本不错的入门书《集体智慧编程》+入门级+微信123票+豆瓣评分 9.0推荐语**Mèrçurý**以实例具体的方式来展示Python的编程技巧,受益良多《Py
基于java的博客系统设计与实现.docx
建设工程基本建设程序检查表.docx