记录:一次爬取gitee项目名称和url[通俗易懂]

记录:一次爬取gitee项目名称和url[通俗易懂]items:classGiteeItem(scrapy.Item):link=scrapy.Field()desc=scrapy.Field()passdb

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

items:

class GiteeItem(scrapy.Item):
    link = scrapy.Field()
    desc = scrapy.Field()
    pass

Jetbrains全家桶1年46,售后保障稳定

db:

import emoji
import pymysql

connect = pymysql.connect(host='localhost', user='root', password='root', db='mindsa', charset='utf8mb4')
cursor = connect.cursor()


def insertGitee(item):
    sql = """INSERT INTO gitee(link,`desc`) VALUES ({},{})""".format("'" + emoji.demojize(item['link']) + "'",
                                                                     "'" + emoji.demojize(item['desc']) + "'")
    cursor.execute(sql)
    connect.commit()

pipelines:

class GiteePipeline:
    def process_item(self, item, spider):
        insertGitee(item)

settings:

ITEM_PIPELINES = {
    'myscrapy.pipelines.GiteePipeline': 300,
}
GiteeSprider:
import scrapy

from myscrapy.items import GiteeItem


class GiteeSprider(scrapy.Spider):
    name = 'gitee'
    allow_domains = 'gitee.com'
    start_urls = ['https://gitee.com/explore/all']

    def parse(self, response, **kwargs):
        # 使用绝对路径定位标签
        elements = response.xpath('//div[@class="ui relaxed divided items explore-repo__list"]//div[@class="item"]')
        for element in elements:
            # 注意:再次进行xpath的时候是相对路径在需要//前面加上.。是.//而不是//
            link = self.allow_domains + element.xpath('.//h3/a/@href').get()
            desc = element.xpath('.//div[@class="project-desc"]/text()').get()
            item = GiteeItem()
            item['link'] = link
            item['desc'] = desc
            yield item
        # 注意:根据多个属性值进行xpath的时候,用and来连接。
        next_href__get = response.xpath(
            '//div[@class="ui tiny pagination menu"]//a[@class="icon item" and @rel="next"]/@href'
        ).get()

        if next_href__get is not None:
            # 如果存在下一页则继续请求
            yield scrapy.Request("https://gitee.com"+next_href__get, self.parse)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219206.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 防不胜防,你可能访问了一个被克隆的网站什么意思_浏览被黑客攻击的网站

    防不胜防,你可能访问了一个被克隆的网站什么意思_浏览被黑客攻击的网站我们来看一下以下这2个网址:http://www.lcbc.com.cn、http://www.baiud.com,在此之前大家有没有发现有什么异样?仔细一看,大家会发现…

  • Navicat Premium 15 激活码在线获取【2021免费激活】

    (Navicat Premium 15 激活码在线获取)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32PGH0SQB-eyJsaWNlb…

  • Java之StringUtils的常用方法

    Java之StringUtils的常用方法StringUtils方法的操作对象是 Java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理,例如,如果输入为null则返回也是null等,具体可以查看源代码)。除了构造器,StringUtils…

  • java项目介绍_java项目介绍及创建[通俗易懂]

    java项目介绍_java项目介绍及创建[通俗易懂]大家配好环境,安装好编译器(eclipse)后,应该建立第一个项目“Helloword”一、在建立项目之前,来介绍一下项目的结构。1、class(类)项目中的最小单位,一个类中存放着相应的方法和量。2、package(包):存放类的空间。为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。3、folder(文件夹):存放包…

  • pytest parametrize fixture_pytest参数化可变参数

    pytest parametrize fixture_pytest参数化可变参数前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

  • C++中的智能指针

    C++中的智能指针

    2021年11月20日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号