【Python】Scrapy的安装与使用

scrapy的安装

不得姐网站
直接用命令

pip install scrapy

网络可能较慢,等等就好
另外windows环境下你还需要安装win32
我之前就是因为没有安装这个库,白忙活了一天,一直都是报错状态

pip install pypiwin32

scrapy的使用

cd到卓面或者其他看的到的文件夹
一行一行输入命令即可

1、scrapy startproject qsbk2、scrapy genspider bdj_spider budejie.com3、scrapy crawl bdj_spider解释
1、scrapy startproject 项目名2、scrapy genspider 爬虫名 网址(不加www)3、爬虫名
修改爬虫里面的parse函数,改为自己想要的效果即可

以上为例
bdj_spider.py是最重要的文件,在里面修改parse即可获得自己想要的

这是获取百思不得姐第一页用户名的代码

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http.response.html import HtmlResponse
from scrapy.selector.unified import SelectorListclass BdjSpiderSpider(scrapy.Spider):name = 'bdj_spider'allowed_domains = ['budejie.com']start_urls = ['http://budejie.com/']def parse(self, response):print('='*100)print('='*100)print('='*100)words = response.xpath("//div[@class='j-list-user']/div")for word in words:author=word.xpath(".//a/text()").get()print(author)print('='*100)print('='*100)print('='*100)print('='*100)

在这里插入图片描述

加等号的目的是更容易看出筛选的内容
在这里插入图片描述

进阶

将爬取的文件存储在文件夹里
我遇到个巨大的坑。浪费我好长时间,都怪自己当时教程没看明白,反反复复的找错

需要在上文修改的文件

1、
bdj_spider.py

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http.response.html import HtmlResponse
from scrapy.selector.unified import SelectorListclass BdjSpiderSpider(scrapy.Spider):name = 'bdj_spider'allowed_domains = ['budejie.com']start_urls = ['http://budejie.com/']def parse(self, response):print('='*100)print('='*100)print('='*100)words = response.xpath("//div[@class='j-r-list-c']/div")for word in words:author=word.xpath(".//a/text()").get()author="".join(author).strip()duanzi = {"author":author}print(duanzi)yield duanzi

在这里插入图片描述
切记这个yield后面必须有返回的值还必须有缩进一定要是for下面的,否则下面的process_item函数根本不会调用
setting里面改了也没有用

2、
pipelines.py

# -*- coding: utf-8 -*-# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
import jsonclass BdjPipeline(object):def __init__(self):self.fp = open("duanzi.json","w",encoding='utf-8')self.fp.write("Hello")def open_spider(self,spider):print('爬虫开始了哈哈哈哈。。。。。')def process_item(self,item,spider):item_json = json.dumps(item,ensure_ascii=False)print("###"*100)print(item_json)self.fp.write(item_json+'\n')return itemdef close_spider(self,spider):self.fp.close()print('爬虫结束了哈哈哈哈。。。。。')

3、
settings.py
把这个解开注释即可,或者复制以下代码覆盖文件

在这里插入图片描述

# -*- coding: utf-8 -*-# Scrapy settings for bdj project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
#     https://docs.scrapy.org/en/latest/topics/settings.html
#     https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://docs.scrapy.org/en/latest/topics/spider-middleware.htmlBOT_NAME = 'bdj'SPIDER_MODULES = ['bdj.spiders']
NEWSPIDER_MODULE = 'bdj.spiders'# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'bdj (+http://www.yourdomain.com)'# Obey robots.txt rules
ROBOTSTXT_OBEY = False# Configure maximum concurrent requests performed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32# Configure a delay for requests for the same website (default: 0)
# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
#DOWNLOAD_DELAY = 3
# The download delay setting will honor only one of:
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
#CONCURRENT_REQUESTS_PER_IP = 16# Disable cookies (enabled by default)
#COOKIES_ENABLED = False# Disable Telnet Console (enabled by default)
#TELNETCONSOLE_ENABLED = False# Override the default request headers:
#DEFAULT_REQUEST_HEADERS = {
#   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
#   'Accept-Language': 'en',
#}# Enable or disable spider middlewares
# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html
#SPIDER_MIDDLEWARES = {
#    'bdj.middlewares.BdjSpiderMiddleware': 543,
#}# Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#DOWNLOADER_MIDDLEWARES = {
#    'bdj.middlewares.BdjDownloaderMiddleware': 543,
#}# Enable or disable extensions
# See https://docs.scrapy.org/en/latest/topics/extensions.html
#EXTENSIONS = {
#    'scrapy.extensions.telnet.TelnetConsole': None,
#}# Configure item pipelines
# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {'bdj.pipelines.BdjPipeline': 300
}# Enable and configure the AutoThrottle extension (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/autothrottle.html
#AUTOTHROTTLE_ENABLED = True
# The initial download delay
#AUTOTHROTTLE_START_DELAY = 5
# The maximum download delay to be set in case of high latencies
#AUTOTHROTTLE_MAX_DELAY = 60
# The average number of requests Scrapy should be sending in parallel to
# each remote server
#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
# Enable showing throttling stats for every response received:
#AUTOTHROTTLE_DEBUG = False# Enable and configure HTTP caching (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
#HTTPCACHE_ENABLED = True
#HTTPCACHE_EXPIRATION_SECS = 0
#HTTPCACHE_DIR = 'httpcache'
#HTTPCACHE_IGNORE_HTTP_CODES = []
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

那么看看爬到的数据吧
在这里插入图片描述
成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[译]ASP.NET Core 2.0 带初始参数的中间件

问题 如何在ASP.NET Core 2.0向中间件传入初始参数? 答案 在一个空项目中,创建一个POCO(Plain Old CLR Object)来保存中间件所需的参数: public class GreetingOptions { public string GreetAt { get; set; } …

【LSB】图片隐写

今天接触到个比较好玩的项目 用的是纯htmljs可以将图片里附着文本或图片 经过网页加工就可以将一些隐秘的信息传入到图片里面去了。 这个功能类似于用一种笔在纸上写字,这种字在正常情况下看不出来,而经过泼水之后就会有字的显现。 这种隐写功能也具…

[编程入门]宏定义之闰年判断:给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y) (读者设计

#include<bits/stdc.h> #define LEAP_YEAR(y) ((y%40&&y%100!0)||(y%4000)?"L":"N") using namespace std;int main() {int year;cin>>year;cout<<LEAP_YEAR(year);return 0; }

jzoj5223-B【矩阵乘法】

正题 题目大意 3∗33*33∗3的矩阵上每个格子都有机器人&#xff0c;每次可以向相邻格子移动或不动(一个格子上可以有多个机器人)&#xff0c;求移动nnn次后每个格子上都有机器人的移动方案数。 解题思路 用矩阵乘法计算出每个格子的机器人移动到每个格子的方案总数。 在枚举最…

框架学习与探究之AOP--Castle DynamicProxy

前言 先说一点废话&#xff0c;在此之前博主也在早期就接触了或者看了些许AOP相关的文章&#xff0c;然后再去做了一些相关的实验&#xff0c;但是始终没有将AOP内化到自己的内功心法当中去&#xff0c;包括从概念还是应用环境&#xff0c;以及当前生态当中的AOP工具等等&#…

【Css】基础属性(一)

给超过div的文本添加滑轮效果&#xff08;必须先对其高度进行设置&#xff09; overflow:auto; 给按钮添加圆润效果 border-radius: 20px; 设置组件居中&#xff08;文本居中&#xff09;&#xff0c;在组件外加div&#xff0c;给div加如下属性 text-align:center; 上文不奏效&…

jzoj100042-保留道路【最小生成树,图论】

正题 题目大意 一张无向图&#xff0c;求剩下一些边使图联通且wG∗max{gVi}wS∗max{sVi}wG*max\{g_{V_i}\}wS*max\{s_{V_i}\}wG∗max{gVi​​}wS∗max{sVi​​}最小 VVV表示选的边集 解题思路 我们可以枚举max{si}max\{s_i\}max{si​}的值&#xff0c;然后用ggg跑最小生成树。…

C++描述杭电OJ 2000. ASCII码排序 ||

C描述杭电OJ 2000. ASCII码排序 || Problem Description 输入三个字符后&#xff0c;按各字符的ASCII码从小到大的顺序输出这三个字符。 Input 输入数据有多组&#xff0c;每组占一行&#xff0c;有三个字符组成&#xff0c;之间无空格。 Output 对于每组输入数据&#xf…

【LSB】图片隐写文档大纲

第一章 绪论 1.1研究背景 1.2研究意义 1.3主要工作 第二章 图片隐写和LSB算法 2.1关于图片隐写术 2.2LSB算法 第三章 系统设计与实现 3.1图像的加载 3.2文本的预编码 3.3文字编码 3.4图片编码 第四章 功能测试及线上部署 4.1功能测试 4.2线上部署 第五章 总结及展望 5.1总结…

C++描述杭电OJ 2005.第几天? ||

C描述杭电OJ 2005.第几天&#xff1f;|| Problem Description 给定一个日期&#xff0c;输出这个日期是该年的第几天。 Input 输入数据有多组&#xff0c;每组占一行&#xff0c;数据格式为YYYY/MM/DD组成&#xff0c;具体参见sample input ,另外&#xff0c;可以向你确保所…

.NET下使用HTTP请求的正确姿势

一、前言 去年9月份的时候我看到过外国朋友关于.NET Framework下HttpClient缺陷的分析后对HttpClient有了一定的了解。前几日也有园友写了一篇关于HttpClient的分析文章, 于是我想深入探索一下在.NET下使用HTTP请求的正确姿势。姿势不是越多越好, 而在于精不精。如果不深入了解…

jzoj5123-diyiti【统计,容斥】

正题 题目大意 n个木棒&#xff0c;求用6个木棒组成正方形的方案总数。 解题思路 这个正方形边有的木棒数两种可能3,1,1,13,1,1,13,1,1,1和2,2,1,12,2,1,12,2,1,1。 第一种可以枚举111&#xff0c;然后用fxf_xfx​表示两根木棒和为x的方案数&#xff0c;用fxf_xfx​加容斥可…

【LSB】图片隐写主体函数

关于图像隐写 图像隐写是一种有效的方式来交换隐藏的消息&#xff0c;而不会引起怀疑。它的工作原理是用lbs算法将消息编码为图像像素的颜色值。 这种功能基于浏览器的最新特性比如File API和Canvas&#xff0c;如果你的浏览器不支持该该功能&#xff0c;请下载最新的浏览器。…

C++描述杭电OJ 2012. 素数判定 ||

C描述杭电OJ 2012. 素数判定 || Problem Description 对于表达式n^2n41&#xff0c;当n在&#xff08;x,y&#xff09;范围内取整数值时&#xff08;包括x,y&#xff09;(-39<x<y<50)&#xff0c;判定该表达式的值是否都为素数。 Input 输入数据有多组&#xff0c;…

欢乐纪中某B组赛【2018.12.8】

前言 题目有毒系列。反正我觉得第1题最难&#xff0c;3,4题简单些。 跟jz大佬做题 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCCDDD111meselfmeselfmeself280280280000808080100100100100100100121212xjqxjqxjq1001001000000001001…

【Ajax】创建并封装

创建 <!DOCTYPE html> <html> <head><title></title><style>#button1{background:skyblue;border-radius:20px;width:100px;}</style> </head> <body> <button id"button1">按钮</button> <i…

C++描述杭电OJ 2016. 数据的交换输出 ||

C描述杭电OJ 2016. 数据的交换输出 || Problem Description 输入n(n<100)个数&#xff0c;找出其中最小的数&#xff0c;将它与最前面的数交换后输出这些数。 Input 输入数据有多组&#xff0c;每组占一行&#xff0c;每行的开始是一个整数n&#xff0c;表示这个测试实例…

ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库

关于 asp.net zero core 项目的启动及说明&#xff0c;请观看我前面的博文ABP从入门到精通&#xff08;1&#xff09;&#xff1a;aspnet-zero-core项目启动及各项目源码说明 本操作对于ABP默认项目应该也是适用的&#xff01; 一.移除默认的SqlServer相关程序包 需要移除“MyC…

P3629-[APIO2010]巡逻【树的直径】

正题 题目大意 刚开始一棵树&#xff0c;在树中加入k条边(k<2)使得这些边都得走过的情况下&#xff0c;每个点都到达并回到原点的最少边。 解题思路 首先我们发现如果不加边的话答案是2∗(n−1)2*(n-1)2∗(n−1)。 之后我们考虑k1k1k1的情况&#xff0c;我们找树的直径&am…

15个顶级Java多线程面试题及答案

转载自 15个顶级Java多线程面试题及答案 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得更多职位&#xff0c;那么你应该准备很多关于多线程的问题。 他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并…