创建scrapy项目_项目构建是什么意思

创建scrapy项目_项目构建是什么意思构建项目:scrapystartprojecttaobao创建一个爬虫:scrapygenspider爬虫名称要爬取的限制域

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

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

构建项目:

scrapy startproject taobao

pycharm打开项目。

在项目根路径创建一个爬虫:

scrapy genspider 爬虫名称 要爬取的限制域

创建scrapy项目_项目构建是什么意思调试工具:

scrapy shell http://www.taobao.com
#选择<title>标签(也可以class),::取标签值,extract提取数据,first指第一个,等价于extract[0]
response.css('title::text').extract_first()

启动项目:

scrapy crawl quotes

pycharm断点调试:

在根路径下新建文件main.py,内容如下:修改下爬虫名称即可

from scrapy.cmdline import execute
import os
import sys

if __name__ == '__main__':
    sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    execute(['scrapy', 'crawl', '爬虫name'])

爬虫如下:

爬虫文件:

import scrapy
from ..items import MyscrapyItem


# 定义爬取逻辑
class QuotesSpider(scrapy.Spider):
    # 爬虫名称
    name = 'quotes'
    # 允许的域
    allowed_domains = ['lab.scrapyd.cn']
    # 初始url集合
    start_urls = ['http://lab.scrapyd.cn/page/1/']

    # 处理response的方法
    def parse(self, response):
        # 用css选择器、获取所有的quote节点
        quotes = response.css('div.quote')
        # 遍历节点集
        for quote in quotes:
            item = MyscrapyItem()
            item["text"] = quote.css('span.text::text').extract_first()
            item["author"] = quote.css('span small.author::text').extract_first()
            item["tags"] = quote.css('div.tags a.tag::text').extract()
            yield item
        # 如果存在下一页则继续递归爬取
        next_page = response.css('.next a::attr(href)').extract_first()
        if next_page is not None:
            yield scrapy.Request(next_page, callback=self.parse)

item文件:

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class MyscrapyItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    # 定义爬取的数据字段
    text = scrapy.Field()
    author = scrapy.Field()
    tags = scrapy.Field()
    pass

pipelines:

# 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


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter


class MyscrapyPipeline:
    def process_item(self, item, spider):
        # 处理爬取的结果
        print(item)

要激活pipelines还需要修改一下settings.py

将这一段注释释放掉

ITEM_PIPELINES = {
   'myscrapy.pipelines.MyscrapyPipeline': 300,
}

注意xpath的使用:

    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()
            print(link)
        pass

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

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

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


相关推荐

  • thread中join和detach的区别

    thread中join和detach的区别C++中的thread对象通常来说表达了执行的线程(threadofexecution),这是一个OS或者平台的概念。当thread::join()函数被调用,调用它的线程会被block,直到线程的执行被完成。基本上,这是一种可以用例知道一个线程已结束的机制。当thread::join()返回时,OS的执行的线程已经完成,C++线程对象可以被销毁。当thread::detach()函数

    2022年5月1日
    76
  • Unity Shader-描边效果[通俗易懂]

    简介描边效果是游戏里面非常常用的一种效果,一般在选中物体或者NPC的时候,被选中的对象就会显示描边效果。比如最近又跑回去玩了玩《剑灵》,虽然出了三年了,在现在的网游里面画面仍然算很好的。还有就是最常见的LOL中的塔,选中时就会看到很明显的描边效果:

    2022年4月11日
    35
  • 用vim 编辑文件时报错E325: ATTENTION

    用vim 编辑文件时报错E325: ATTENTION当我们用vim编辑文件时,出现E325:ATTENTION报错[root@www~]#vim/etc/named.rfc1912.zonesE325:ATTENTIONFoundaswapfilebythename”/etc/.named.rfc1912.zones.swp”ownedby:rootdated:ThuF…

    2022年5月18日
    113
  • pycharm激活码【2021最新】

    (pycharm激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlML…

    2022年3月21日
    52
  • python求平均值的怎么编写,python 怎么求平均值[通俗易懂]

    python求平均值的怎么编写,python 怎么求平均值[通俗易懂]python求平均值的方法:首先新建一个python文件;然后初始化sum总和的值;接着循环输入要计算平均数的数,并计算总和sum的值;最后利用“总和/数量”的公式计算出平均数即可。本文操作环境:Windows7系统,python3.5版本,DellG3电脑。首先我们先来了解一下计算平均数的IPO模式.输入:待输入计算平均数的数。处理:平均数算法输出:平均数明白了程序的IPO模式之后,我们打开本…

    2025年6月21日
    0
  • cacti网络监控工具完全指南

    cacti网络监控工具完全指南

    2021年8月14日
    78

发表回复

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

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