python scrapy框架df_Python项目--Scrapy框架(一)

环境

win8, python3.7, pycharm

正文

1.Scrapy框架的安装

在cmd命令行窗口执行:

pip install Scrapy

即可完成Scrapy框架的安装

2. 创建Scrapy项目

在cmd命令行窗口下切换到想要的目录下, 我这里是C:\Users\Administrator\PycharmProjects\untitled\Tests\Scrapy

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xNDY5NzEyLzIwMTgwOS8xNDY5NzEyLTIwMTgwOTE5MTYyMjIzNDQ2LTk5MzAwMjkzMS5wbmc=.jpg

执行下面代码, 即可在当前的"Scrapy"目录下生成JianShu项目文件夹.

scrapy startproject JianShu

文件夹结构如下:

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xNDY5NzEyLzIwMTgxMC8xNDY5NzEyLTIwMTgxMDE0MjI0MTM4NDYyLTQ3MTk2NjA5My5wbmc=.jpg

items.py:定义要爬取的项目

middlewares.py: 定义爬取时的中间介质

pipelines.py: 定义数据管道

settings.py: 配置文件

scrapy.cfg: Scrapy部署时的配置文件

3. 创建JianShuSpider

在cmd命令行依次执行以下代码, 即可在"JianShu/spiders"目录下创建JianShuSpider.py文件

cd JianShu

scrapy genspider JianShuSpider JianShuSpider.toscrape.com

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xNDY5NzEyLzIwMTgxMC8xNDY5NzEyLTIwMTgxMDE0MjI1NTE4MTU1LTE5MjIyNzUwMTIucG5n.jpg

4. 定义要爬取的项目

在items.py中确定要爬取的信息: 简书热门专题中的主题, 内容, 文章数, 粉丝数这四个信息

import scrapy

from scrapy.item import Item, Field

class JianshuItem(Item):

# define the fields for your item here like:

# name = scrapy.Field()

title = Field() #主题

content = Field() #内容

article = Field() #文章

fans = Field() #粉丝

5. 编写爬虫主程序

简书热门专题采用异步加载, 在NetWork中选择XHR来确定异步加载的url: https://www.jianshu.com/recommendations/collections?page=(1,2,3,4.....)&order_by=hot

在JianShuSpider.py中编写主程序:

import scrapy

from scrapy.spiders import CrawlSpider

from scrapy.selector import Selector

from JianShu.items import JianshuItem

from scrapy.http import Request

class JianShu(CrawlSpider):

name = 'JianShu'

allowed_domains = ['JianShuSpider.toscrape.com']

start_urls = ['https://www.jianshu.com/recommendations/collections?page=1&order_by=hot']

def parse(self, response):

item = JianshuItem()

#对源码进行初始化

selector = Selector(response)

#采用xpath进行解析

infos = selector.xpath('//div[@class="collection-wrap"]')

for info in infos:

title = info.xpath('a[1]/h4/text()').extract()[0]

content = info.xpath('a[1]/p/text()').extract()

article = info.xpath('div/a/text()').extract()[0]

fans = info.xpath('div/text()').extract()[0]

#加入判断, 如果content存在则返回content[0], 否则返回''

if content:

content = content[0]

else:

content = ''

item['title'] = title

item['content'] = content

item['article'] = article

item['fans'] = fans

yield item

#列表生成式, 生成多个url

urls = ['https://www.jianshu.com/recommendations/collections?page={0}&order_by=hot'.format(str(page)) for page in range(2,37)]

for url in urls:

yield Request(url,callback=self.parse)

6. 保存到MongoDB

利用pipelines数据管道将其存储至MongoDB, 在pipelines.py编写:

import pymongo

class JianshuPipeline(object):

def __init__(self):

'''连接Mongodb'''

client = pymongo.MongoClient(host='localhost')

db = client['test']

jianshu = db["jianshu"]

self.post = jianshu

def process_item(self, item, spider):

'''写入Mongodb'''

info = dict(item)

self.post.insert(info)

return item

7. setting配置

BOT_NAME = 'JianShu'

SPIDER_MODULES = ['JianShu.spiders']

NEWSPIDER_MODULE = 'JianShu.spiders'

#从网站请求头复制粘贴User-Agent

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'

ROBOTSTXT_OBEY = True

#设置等待时间5秒

DOWNLOAD_DELAY = 5

#配置项目管道

ITEM_PIPELINES = {

'JianShu.pipelines.JianshuPipeline': 300,

}

8. 新建main.py文件

在JianShu文件目录下新建main.py文件, 编辑如下代码:

from scrapy import cmdline

cmdline.execute('scrapy crawl JianShu'.split())

9. 运行main.py文件

在运行之前, 需确保mongodb服务已经启动, 执行结果如下:

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xNDY5NzEyLzIwMTgxMC8xNDY5NzEyLTIwMTgxMDE1MTYxMzM0NTM4LTE3MDMwMjk0MjMucG5n.jpg

Python项目--Scrapy框架(二)

本文主要是利用scrapy框架爬取果壳问答中热门问答, 精彩问答的相关信息 环境 win8, python3.7, pycharm 正文 1. 创建scrapy项目文件 在cmd命令行中任意目录下执行 ...

python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

操作环境:python3 在上一文中python爬虫scrapy框架--人工识别知乎登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前 ...

Python爬虫Scrapy框架入门(1)

也许是很少接触python的原因,我觉得是Scrapy框架和以往Java框架很不一样:它真的是个框架. 从表层来看,与Java框架引入jar包.配置xml或.property文件不同,Scrapy的模 ...

Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

Python爬虫 ---scrapy框架初探及实战

目录 Scrapy框架安装 操作环境介绍 安装scrapy框架(linux系统下) 检测安装是否成功 Scrapy框架爬取原理 Scrapy框架的主体结构分为五个部分: 它还有两个可以自定义下载功能的 ...

Python爬虫Scrapy框架入门(2)

本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写 ...

Python爬虫Scrapy框架入门(0)

想学习爬虫,又想了解python语言,有个python高手推荐我看看scrapy. scrapy是一个python爬虫框架,据说很灵活,网上介绍该框架的信息很多,此处不再赘述.专心记录我自己遇到的问题 ...

基于python的scrapy框架爬取豆瓣电影及其可视化

1.Scrapy框架介绍 主要介绍,spiders,engine,scheduler,downloader,Item pipeline scrapy常见命令如下: 对应在scrapy文件中有,自己增加 ...

Python爬虫-- Scrapy框架

Scrapy框架 Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码.对于会阻塞线程的操作包含访问文件.数据库或者Web.产生新的进程并需要 ...

随机推荐

读《C#高级编程》第1章问题

读第1章 .Net机构体系笔记 网红的话:爸爸说我将来会是一个牛逼的程序员,因为我有一个梦,虽然脑壳笨但是做事情很能坚持. 本章主要是了解.Net的结构,都是一些概念,并没 ...

Android 用Fragment创建一个选项卡

本文结合之前的动态创建fragment来进行一个实践,来实现用Fragment创建一个选项卡 本文地址:http://www.cnblogs.com/wuyudong/p/5898075.html,转 ...

jsp学习一

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1&q ...

蓝牙的SDP协议总结

1.概念     SDP协议让客户机的应用程序发现存在的服务器应用程序提供的服务以及这些服务的属性.SDP只提供发现服务的机制,不提供使用这些服务的方法.每个蓝牙设备都需要一个SDP Service, ...

OS之多线程

os中引入进程的目的是,为了描述和实现多个程序的并发执行,以改善资源利用率及提高系统的吞吐量. 为什么要引入线程?这是为了减少程序并发执行时系统所付出的额外开销(堆栈切换的开销等),使os具有更好的并 ...

Jvm垃圾收集器和垃圾回收算法

概述: 目前内存的动态分配和内存的回收技术已经相当成熟,一切看起来都已经进入了“自动化”时代,为什么还要去了解GC和内存分配呢?原因很简单:当需要排查各种内存泄漏.内存溢出问题时,当垃圾收集器成为系统 ...

TCP协议学习总结(上)

在计算机领域,数据的本质无非0和1,创造0和1的固然伟大,但真正百花齐放的还是基于0和1之上的各种层次之间的组合(数据结构)所带给我们人类各种各样的可能性.例如TCP协议,我们的生活无不无时无刻的站在 ...

Thrift0&period;11&period;0基于Intellij IDEA的简单的例子

前言 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其中所用到的数据传输方式包括 XML,JSON 等,然 ...

SpringMVC 之 Hello World 入门

1 准备开发环境和运行环境 依赖 jar 包下载,如下图所示: 2 前端控制器的配置 在我们的web.xml中添加如下配置:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ERROR: test_pt_common_predict (__main__.TestCommonExecutor) ---------------------------------------------------------------------- Traceback (most recent call last): File "d_warehouse/vot/z_test/z_model/cv/pt_common.py", line 54, in test_pt_common_predict Mnist(self.data_dir, man="gcgS467j").b("0001").run() File "/django_scrapy/d_warehouse/vot/base/base.py", line 357, in run return self.do_run() File "/django_scrapy/d_warehouse/vot/data/dataset/cv/mnist.py", line 34, in do_run train_df = self.sqlc.createDataFrame(train_data_list) File "/usr/local/lib/python3.8/dist-packages/pyspark/sql/context.py", line 473, in createDataFrame return self.sparkSession.createDataFrame( # type: ignore[call-overload] File "/usr/local/lib/python3.8/dist-packages/pyspark/sql/session.py", line 1222, in createDataFrame self._jvm.SparkSession.setActiveSession(self._jsparkSession) File "/usr/local/lib/python3.8/dist-packages/py4j/java_gateway.py", line 1712, in __getattr__ answer = self._gateway_client.send_command( File "/usr/local/lib/python3.8/dist-packages/py4j/java_gateway.py", line 1036, in send_command connection = self._get_connection() File "/usr/local/lib/python3.8/dist-packages/py4j/clientserver.py", line 284, in _get_connection connection = self._create_new_connection() File "/usr/local/lib/python3.8/dist-packages/py4j/clientserver.py", line 291, in _create_new_connection connection.connect_to_java_server() File "/usr/local/lib/python3.8/dist-packages/py4j/clientserver.py", line 438, in connect_to_java_server self.socket.connect((self.java_address, self.java_port)) ConnectionRefusedError: [Errno 111] Connection refused
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值