热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

热门文章_Scrapy学习第五课

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Scrapy学习第五课相关的知识,希望对你有一定的参考价值。python爬虫框架scrapy学习第五课

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Scrapy学习第五课相关的知识,希望对你有一定的参考价值。



python爬虫框架scrapy学习第五课


  • 任务:爬取简书30日热门文章信息,数据存储在MongoDB库中
  • 执行:爬虫操作及数据存储
    • 安装mongdb
    • python 连接mongodb驱动PyMongo
    • 爬虫实例

  • 结果:爬取结果展示
  • 问题总结
    • DEBUG: Crawled (403) XXX



任务:爬取简书30日热门文章信息,数据存储在MongoDB库中

简书热门30日


执行:爬虫操作及数据存储

安装mongdb


  1. 下载mongodb安装包。由于尝试官网下载一直失败,故从该mongodb下载链接 处下载安装包。

  2. 参照mongoDB入门与安装进行安装。这里需要注意的是msi文件安装完成后,自带data文件夹,因此不需要额外新建数据存放目录。

  3. 以管理员身份启动mongodb服务。注意执行net start mongodb一定是在管理员身份下运行cmd/powershell,否则会出现没有访问权限/访问被拒绝的错误。


python 连接mongodb驱动PyMongo


  1. 安装PyMongo需执行如下命令


pip install pymongo



  1. 在python文件需要连接mongodb处,导入


import pymongo



爬虫实例


  1. 具体爬虫文件——jian.py

# -*- coding: utf-8 -*-
import scrapy
from JianShu.items import JianshuItem
class JianSpider(scrapy.Spider):
name = 'jian'
allowed_domains = ['www.jianshu.com']
start_urls = ('https://www.jianshu.com/trending/monthly?utm_medium=index-banner-s&utm_source=desktop',)
def parse(self, response):

item = JianshuItem()
content = response.xpath('//div[@class="content"]')
for each in content:
item['title'] = each.xpath('./a/text()')[0].extract()
abstract = each.xpath('./p/text()')[0].extract()
abstract = abstract.replace("\\n", "")
abstract = abstract.strip()
item['abstract'] = abstract
item['nickname'] = each.xpath('./div/a/text()')[0].extract()
item['link'] = "https://www.jianshu.com" + each.xpath('./a/@href')[0].extract()
yield item

  1. items.py

import scrapy
class JianshuItem(scrapy.Item):

#文章标题
title = scrapy.Field()
#摘要
abstract = scrapy.Field()
#作者
nickname = scrapy.Field()
#文章链接
link = scrapy.Field()

  1. pipelines.py

import pymongo
from scrapy.conf import settings
class JianshuPipeline(object):
def __init__(self):
#主机
host = settings["MONGODB_HOST"]
#端口
port = settings["MONGODB_PORT"]
#数据库名
dbname = settings["MONGODB_DBNAME"]
#数据表
sheetname = settings["MONGODB_SHEETNAME"]
#创建MONGODB数据库
client = pymongo.MongoClient(host=host, port=port)
#指定数据库
mydb = client[dbname]
#指定数据表
self.post = mydb[sheetname]
def process_item(self, item, spider):
data = dict(item)
self.post.insert(data)
return item

  1. settings.py

# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'
ITEM_PIPELINES=
'JianShu.pipelines.JianshuPipeline':300
MONGODB_HOST = "127.0.0.1"
MONGODB_PORT = 27017
MONGODB_DBNAME = "jianshu"
MONGODB_SHEETNAME = "jianshuPaper"

结果:爬取结果展示

爬取到的数据存储在mongodb数据库中,查看新建的数数据库“jianshu”,数据表“jianshuPaper”和表内容是否存在,具体操作如下。


  1. 连接数据库

  2. 查看已有数据库

  3. 查看库jianshu的表

  4. 查看表jianshuPaper内容


问题总结

DEBUG: Crawled (403) XXX

解决:settings.py文件中增加如下代理



USER_AGENT = ‘Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;’



推荐阅读
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
author-avatar
giee旗舰店_姬儿皮衣_256
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有