记录:一次爬取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)

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Marsaglia XORshift随机数算法「建议收藏」

    Marsaglia XORshift随机数算法「建议收藏」引理:二进制矩阵相乘中加法为异或。给定非空向量beta和n阶矩阵T,序列beta*T,beta*T^2,beta*T^3,…的秩为2^n-1的充要条件是矩阵T为非奇异矩阵.L是左移位操作,y=y^(y>b)表示为y=y*(E+R^b),令T=(E+L^a)(E+R^b),n=32或64,找不到这样的非奇异矩阵。但是令T=(E+L^a)*(E+R^b)*(E+L^c)能找

    2022年7月26日
    9
  • 脚手架专项施工方案范本_脚手架工程施工方案主要内容

    脚手架专项施工方案范本_脚手架工程施工方案主要内容前言如何快速搭建一个httprunner项目呢?我们可以使用脚手架,脚手架就是自动地创建一些目录,形成一个项目的架构,不需要我们再手动的去创建查看创建新项目的命令先来查看一下帮助命令httpr

    2022年7月28日
    3
  • jsp:include引入jsp文件的时候(如果被包含的文件存在js文件),不要用相对路径

    jsp:include引入jsp文件的时候(如果被包含的文件存在js文件),不要用相对路径先回忆一下二者的区别(对于此篇文章而言,二者在用法上没有区别) jsp:include是先编译一下included.jsp文件,然后再包含 先编译,后包含@ include是先把文件包含就来,然后统一编译 先包含,后编译  今天下午想把jQuery集成到项目中,发现怎么样都会出问题。原因就是路径问题。在集成时,我的思路是…

    2022年6月13日
    27
  • dz搬家 win linux,Discuz论坛完美搬家 详细分享我的DZ搬家步骤[通俗易懂]

    dz搬家 win linux,Discuz论坛完美搬家 详细分享我的DZ搬家步骤[通俗易懂]Discuz论坛完美搬家详细分享我的DZ搬家步骤由于论坛的迅速发展,普通的虚拟主机已经承受不住了,想要换成云服务器,却又不懂得如果搬家。通过网络以及网站客服的查询帮助,亲手实现了Discuz完美搬家。我在搬家时截了每个步骤的图,今天写下这篇文章,为大家详细解说一下。其实网站要搬家有好几种方法,但是要求完美搬家的话,就不没那么多了。很多人都在用帝国备份王进行数据库的备份,自我感觉帝国备份王确实要比…

    2022年7月25日
    12
  • java取整四舍五入_java取整和四舍五入

    java取整四舍五入_java取整和四舍五入Contents12345Math类里的两个方法:staticdouble(doublea)返回最大的(最接近正无穷大)double值,该值小于等于参数,并等于某个整数。staticdoubleceil(doublea)返回最小的(最接近负无穷大)double值,该值大于等于参数,并等于某个整数。123456789101112131415161718192021222324252627…

    2022年5月21日
    32
  • cheerio获取outerHTML

    cheerio获取outerHTMLcheerio作为node中jquery的替代品,拥有与jquery相似的api,甚至连详细文档的地址都指向api.jquery.com。但是由于执行环境的关系,并没有完全继承jquery中的方法。对于这样的页面<html> <head></head> <body> <ulid=”fruits”> <li>…

    2022年6月22日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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