【Python爬虫】: Scrapy工程的创建和使用(爬取糗图百科)

一.创建一个Scrapy工程

首先我们创建一个名为project_name的scrapy工程:

scrapy startproject project_name

在子目录下生成一个名为first的爬虫文件:

(base) F:\computer\scrapy_learn>scrapy genspider first www.xxx.com
Created spider 'first' using template 'basic'

执行工程(生成爬虫文件之后才可以执行工程):

scrapy crawl spiderName(创建爬虫文件的那个名字,这里应该写为刚才的first)

现在我们依靠刚才创建的scrapy文件来爬取网站,并进行数据解析!

二.小试牛刀:使用Scrapy爬取糗图百科

我们创建的Srapy工程目录如下:

为了能够开始爬取数据,我们需要更改setting文件当中的一些配置,我们需要更改的有:

  1. User-Agent:更改成你的chrom浏览器的名称
  2. ROBOTSTXT_OBEY:更改为Flase,如果遵循robots协议,保留为原来的TRUE,则很多数据无法抓取
  3. LOG_LEVEL:增加LOG_LEVEL参数,并修改为’ERROR’,这样就可以在爬取数据最后的数据解析当中,只输出错误的信息,而不输出没用的日志信息

修改后的settings.py的代码如下所示:

同时修改first.py文件,在parse处对数据进行解析,在__init__处配置参数,最后的代码如下所示:

import scrapy

class FirstSpider(scrapy.Spider):
    #爬虫文件的名称:爬虫源文件的一个唯一标识
    name = 'first'
    #允许的域名:用来限定start_urls列表中哪些url可以进行请求发送
    #allowed_domains = ['www.baidu.com']
    #起始的url列表:该列表当中存放的url会被scrapy自动发送请求
    start_urls = ['https://www.qiushibaike.com/text/']

    #用来进行数据解析的:response参数标的是请求成功后对应的响应对象
    def parse(self, response):
        #start_urls里面有多少个url。就调用这个方法多少次
        author=response.xpath('//div[@id="content"]//h2/text()').extract()
        content=response.xpath('//div[@id="content"]//div[@class="content"]/span/text()').extract()

        for i in author:
            print(i)
            break
        for i in content:
            print(i)
            break

在命令行输入:

scrapy crawl first

输出:

净心居士

胖丫把自己打扮的从来没有漂亮,说要和闺蜜逛街去。我想她闺蜜又不是不认识,又吃饭又可以AAB了。

代码思路解析:

  1. 首先配置爬虫的文件名为’first’
  2. 配置我们需要爬取的网站url
  3. 查看网站源代码,确定使用xpath的表达式是什么(这里发现所有的内容和作者名称均在id=”content”这个div块级元素下,然后写好scrapy自带的xpath表达式,类似于lxml的etree进行导入,得到selector对象,使用extract函数可以将selector对象当中的data,也就是实际文字当中的字符串)如下所示:

4.我们仅仅打印其中的一作者和其content,这样整个糗图百科的笑话就被我们爬取下来啦!

Original: https://blog.csdn.net/Geeksongs/article/details/113749345
Author: Geeksongs
Title: 【Python爬虫】: Scrapy工程的创建和使用(爬取糗图百科)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/790606/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 太空射击第13课: 爆炸效果

    太空射击第13课: 爆炸效果 在本课中,我们将在玩家射击流星时进行一些动画爆炸。 视频 您可以在此处观看本课程的视频: 自动开火 首先,让我们对玩家的射击方式进行一些小的改变。现在…

    Python 2023年9月25日
    038
  • django modelform

    python view.py class UserModelForm(forms.ModelForm): class Meta: model = models.UserInfo f…

    Python 2023年6月12日
    053
  • python qcut_python – 在qcut十分之后选择/过滤垃圾箱

    我试图通过十分位数对数据进行分箱后访问标签(即位置指示器): q = pd.qcut(df[“revenue”], 10) q.head(): 7 (317…

    Python 2023年8月8日
    039
  • Python学习笔记-Pygame

    目录 一、Pygame概述 1.安装Pyganme 2.Pygame常用模块介绍 2.1 display模块常用方法 2.2 pygame.event模块常用方法 2.3 Surf…

    Python 2023年9月20日
    043
  • 【Pandas】Pandas中的一些操作–读取excel、修改列名、删除行、列

    df=pd.read_excel(‘jx.xlsx’]) # 读取excel所有&#…

    Python 2023年8月8日
    0110
  • 解决YOLOV5训练时P、R、mAP等值均为0的问题

    最近用YOLOV5训练自己的数据集,出现了训练失败的情况,比如box,obj,cls,labels等均为nan或0,找了很多办法,其实就是cuda与PyTorch版本的问题 Epo…

    Python 2023年8月3日
    0363
  • python concat axis_Python的合并数据集

    Python 的pandas能够通过一些内置的方式进行数据集的合并。Pandas.merge函数可以实现根据一个或多个键值关键的键值,将两个DataFrame进行连接,这一特性,特…

    Python 2023年8月9日
    055
  • python的多线程

    Original: https://www.cnblogs.com/tuixiulaozhou/p/16737747.htmlAuthor: 退休的老周Title: python的…

    Python 2023年6月9日
    074
  • Python-爬虫基础五(文件操作)

    一、文件的打开与关闭 打开文件/创建文件 使用open函数可以打开一个已经存在的文件,或者创建一个新文件 open(文件类路径,访问模式) 示例: f = open(‘test.t…

    Python 2023年6月12日
    066
  • 跨语言调用C#代码的新方式-DllExport

    简介 上一篇文章使用C#编写一个.NET分析器文章发布以后,很多小伙伴都对最新的NativeAOT函数导出比较感兴趣,今天故写一篇短文来介绍一下如何使用它。 在以前,如果有其他语言…

    Python 2023年10月21日
    054
  • 私有化

    那种仅限从一个对象内部访问的”私有”实例变量在 Python 中并不存在。 但是,大多数 Python 代码都遵循这样一个约定:以一个下划线开头的名称 (例…

    Python 2023年6月11日
    052
  • numpy初识

    文章目录 numpy初识 * 一、numpy是什么? 二、numpy数组 – 2.1 数组使用 2.2 创建数组 + 1. 使用empty创建空数组 2. 使用aran…

    Python 2023年8月27日
    038
  • pandas数据的合并concat()和merge()

    import pandas as pd 轴向连接(concatenation): pd.concat() 可以沿一个轴将多个DataFrame对象连接在一起, 形成一个新的Data…

    Python 2023年8月21日
    050
  • Python批量将csv文件的编码方式转换为UTF-8

    当我们用pandas是操作CSV文件的时候,常常会因为编码问题出现报错。 pandas_libs\parsers.pyx in pandas._libs.parsers.TextR…

    Python 2023年8月3日
    068
  • np.stack()使用

    1.官网https://numpy.org/doc/stable/reference/generated/numpy.stack.html np.stack(arrays , ax…

    Python 2023年8月28日
    043
  • 使用 React 和 Django Channels 构建聊天应用程序

    使用 Django 开发用于 HTTP 连接和应用程序请求的服务器很常见。 但是,在开发需要始终打开连接以进行双向连接的应用程序(如会议和聊天程序)时,使用 HTTP 连接效率低下…

    Python 2023年8月4日
    046
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球