首页 > 其他分享 >记录:一次爬取gitee项目名称和url

记录:一次爬取gitee项目名称和url

时间:2023-06-05 14:37:49浏览次数:37  
标签:xpath get url gitee 爬取 item class desc


items:

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

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)

标签:xpath,get,url,gitee,爬取,item,class,desc
From: https://blog.51cto.com/u_14121041/6415404

相关文章

  • 模糊匹配url
    /***字符串模糊匹配*<p>example:*<p>user*user-add--true*<p>user*art-add--false*@parampatt表达式*@paramstr待匹配的字符串*@return是否可以匹配*/publicstaticbooleanvagueMatch(St......
  • Python网络爬虫对汽车团购报名的爬取及分析
    一、选题的背景(10分)现如今汽车已逐步进入家庭中,对于一些准备购入新车的家庭,犹豫不决,不知道现在市场上与车友们推荐的哪些车,此次爬虫项目将对网上的团购排名进行爬取,更能简单直观的让大家依据个人情况来挑选自己中意的车辆详情。二、设计方案(20分)主题式网络爬虫名称    ......
  • Java URL正则表达式
    评:网上转贴的Java正则很让人失望,一篇JavaScript正则集录被很多人当成Java正则表达式转来转去,我擦,太坑爹了吧。自己写一个吧importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassRegularExpressionTest{publicstaticvoidmain(S......
  • Flask中url_for的使用传参,及多个参数
    flask.url_for(endpoint,**values)参数:endpoint-URL的端点(函数名称)values-URL规则的变量参数_external-如果设置为True,则生成绝对URL。服务器地址可以通过SERVER_NAME配置变量更改,默认为localhost。_scheme-指定所需URL方案的字符串。该_external参数必须设......
  • 基于Selenium库的python爬虫脚本,爬取painterest上的图片
    基于Selenium库的python爬虫脚本,爬取painterest上的图片问题背景Pinterest是一个社交媒体平台,它提供了一个虚拟的个人兴趣画板,让用户可以收集和分享他们喜欢的图片、视频和链接。上面有许多优秀的图片供浏览和下载,但是一个个点图片下载非常麻烦。于是想要用Python语言写一个自......
  • 如何防止网站被爬虫爬取的几种办法
     今天想对一个问题进行分析和讨论,就是关于爬虫对网站页面爬取的问题,有些网站通过爬虫去采集其它的网站页面信息作为己用,大量的爬取行为会对web服务器有比较性能有影响,主要的表现就是会变得很慢。对于如何防止网站被爬取,我想从以下几种方法去分析:1.基于程序本身去防止爬取:作为爬虫......
  • 网络爬虫--爬取泉州,福州,厦门历史天气和近七日天气--数据可视化
     一:选题背景:通过爬取各个城市的历史天气数据及近日数据,来进行对天气的数据分析与可视化。从而帮助我们的生活更加便利。所爬取的网站为2345天气王https://tianqi.2345.com/wea_forty/71924.htm这里我们进入网站后右键检查,点击网络这一栏,并刷新页面能够看到有两个文件,而我们所......
  • 关于本地代码上传gitee
    一、首先准备两个工具一个是git,一个是tortoisegittortoisegit  链接:https://pan.baidu.com/s/1IubajDKee2TSWVafCiRg_A提取码:xcjqgit链接:https://pan.baidu.com/s/1bcy-JeMfRQs-lbhpnA5bog提取码:xfui(安装步骤省略)二、安装完成右击会出现以下两个东西三、去注......
  • 2023-06-03 初试python爬取文章
    注意:本实验是在windows系统下操作。首先配置python环境以及安装一些必要的库:安装python请前往python官网下载,仙人指路......
  • URL中文乱码问题
    我们主要通过两种形式提交向服务器发送请求:URL、表单。而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面。通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了。不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。如......