Heim Backend-Entwicklung Python-Tutorial 使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤

使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤

Jun 06, 2016 am 11:29 AM
scrapy 网络爬虫 Spinne

代码如下:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector

from cnbeta.items import CnbetaItem
class CBSpider(CrawlSpider):
    name = 'cnbeta'
    allowed_domains = ['cnbeta.com']
    start_urls = ['http://www.bitsCN.com']

    rules = (
        Rule(SgmlLinkExtractor(allow=('/articles/.*\.htm', )),
             callback='parse_page', follow=True),
    )

    def parse_page(self, response):
        item = CnbetaItem()
        sel = Selector(response)
        item['title'] = sel.xpath('//title/text()').extract()
        item['url'] = response.url
        return item



实现蜘蛛爬虫步骤

1.实例初级目标:从一个网站的列表页抓取文章列表,然后存入数据库中,数据库包括文章标题、链接、时间

首先生成一个项目:scrapy startproject fjsen
先定义下items,打开items.py:

我们开始建模的项目,我们想抓取的标题,地址和时间的网站,我们定义域为这三个属性。这样做,我们编辑items.py,发现在开放目录目录。我们的项目看起来像这样:

代码如下:


from scrapy.item import Item, Field
class FjsenItem(Item):
    # define the fields for your item here like:
    # name = Field()
    title=Field()
    link=Field()
    addtime=Field()

第二步:定义一个spider,就是爬行蜘蛛(注意在工程的spiders文件夹下),他们确定一个初步清单的网址下载,如何跟随链接,以及如何分析这些内容的页面中提取项目(我们要抓取的网站是http://www.fjsen.com/j/node_94962.htm 这列表的所有十页的链接和时间)。
新建一个fjsen_spider.py,内容如下:

代码如下:


#-*- coding: utf-8 -*-
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from fjsen.items import FjsenItem
class FjsenSpider(BaseSpider):
    name="fjsen"
    allowed_domains=["fjsen.com"]
    start_urls=['http://www.fjsen.com/j/node_94962_'+str(x)+'.htm' for x in range(2,11)]+['http://www.fjsen.com/j/node_94962.htm']
    def parse(self,response):
        hxs=HtmlXPathSelector(response)
        sites=hxs.select('//ul/li')
        items=[]
        for site in sites:
            item=FjsenItem()
            item['title']=site.select('a/text()').extract()
            item['link'] = site.select('a/@href').extract()
            item['addtime']=site.select('span/text()').extract()
            items.append(item)
        return items                 

name:是确定蜘蛛的名称。它必须是独特的,就是说,你不能设置相同的名称不同的蜘蛛。
allowed_domains:这个很明显,就是允许的域名,或者说爬虫所允许抓取的范围仅限这个列表里面的域名。
start_urls:是一个网址列表,蜘蛛会开始爬。所以,第一页将被列在这里下载。随后的网址将生成先后从数据中包含的起始网址。我这里直接是列出十个列表页。
parse():是蜘蛛的一个方法,当每一个开始下载的url返回的Response对象都会执行该函数。
这里面,我抓取每一个列表页中的

    下的
  • 下的数据,包括title,链接,还有时间,并插入到一个列表中


    第三步,将抓取到的数据存入数据库中,这里就得在pipelines.py这个文件里面修改了

    代码如下:


    # Define your item pipelines here
    #
    # Don't forget to add your pipeline to the ITEM_PIPELINES setting
    from os import path
    from scrapy import signals
    from scrapy.xlib.pydispatch import dispatcher
    class FjsenPipeline(object):

        def __init__(self):
            self.conn=None
            dispatcher.connect(self.initialize,signals.engine_started)
            dispatcher.connect(self.finalize,signals.engine_stopped)
        def process_item(self,item,spider):
            self.conn.execute('insert into fjsen values(?,?,?,?)',(None,item['title'][0],'http://www.bitsCN.com/'+item['link'][0],item['addtime'][0]))
            return item
        def initialize(self):
            if path.exists(self.filename):
                self.conn=sqlite3.connect(self.filename)
            else:
                self.conn=self.create_table(self.filename)
        def finalize(self):
            if self.conn is not None:
                self.conn.commit()
                self.conn.close()
                self.conn=None
        def create_table(self,filename):
            conn=sqlite3.connect(filename)
            conn.execute("""create table fjsen(id integer primary key autoincrement,title text,link text,addtime text)""")
            conn.commit()
            return conn

    这里我暂时不解释,先继续,让这个蜘蛛跑起来再说。

    第四步:修改setting.py这个文件:将下面这句话加进去

    代码如下:


    ITEM_PIPELINES=['fjsen.pipelines.FjsenPipeline']

    接着,跑起来吧,执行:

    代码如下:


    scrapy crawl fjsen


    就会在目前下生成一个data.sqlite的数据库文件,所有抓取到的数据都会存在这里。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Scrapy implementiert das Crawlen und Analysieren von Artikeln über öffentliche WeChat-Konten Scrapy implementiert das Crawlen und Analysieren von Artikeln über öffentliche WeChat-Konten Jun 22, 2023 am 09:41 AM

Scrapy implementiert das Crawlen von Artikeln und die Analyse öffentlicher WeChat-Konten. WeChat ist in den letzten Jahren eine beliebte Social-Media-Anwendung, und die darin betriebenen öffentlichen Konten spielen ebenfalls eine sehr wichtige Rolle. Wie wir alle wissen, sind öffentliche WeChat-Konten ein Ozean an Informationen und Wissen, da jedes öffentliche Konto Artikel, grafische Nachrichten und andere Informationen veröffentlichen kann. Diese Informationen können in vielen Bereichen umfassend genutzt werden, beispielsweise in Medienberichten, in der akademischen Forschung usw. In diesem Artikel erfahren Sie, wie Sie das Scrapy-Framework zum Crawlen und Analysieren von WeChat-Artikeln zu öffentlichen Konten verwenden. Scr

Scrapy-Fallanalyse: So crawlen Sie Unternehmensinformationen auf LinkedIn Scrapy-Fallanalyse: So crawlen Sie Unternehmensinformationen auf LinkedIn Jun 23, 2023 am 10:04 AM

Scrapy ist ein Python-basiertes Crawler-Framework, mit dem schnell und einfach relevante Informationen im Internet abgerufen werden können. In diesem Artikel analysieren wir anhand eines Scrapy-Falls im Detail, wie Unternehmensinformationen auf LinkedIn gecrawlt werden. Bestimmen Sie die Ziel-URL. Zunächst müssen wir klarstellen, dass unser Ziel die Unternehmensinformationen auf LinkedIn sind. Daher müssen wir die URL der LinkedIn-Unternehmensinformationsseite finden. Öffnen Sie die LinkedIn-Website, geben Sie den Firmennamen in das Suchfeld ein und

Scrapy-Implementierungsmethode für asynchrones Laden basierend auf Ajax Scrapy-Implementierungsmethode für asynchrones Laden basierend auf Ajax Jun 22, 2023 pm 11:09 PM

Scrapy ist ein Open-Source-Python-Crawler-Framework, das schnell und effizient Daten von Websites abrufen kann. Viele Websites verwenden jedoch die asynchrone Ladetechnologie von Ajax, was es Scrapy unmöglich macht, Daten direkt abzurufen. In diesem Artikel wird die Scrapy-Implementierungsmethode basierend auf dem asynchronen Laden von Ajax vorgestellt. 1. Ajax-Prinzip des asynchronen Ladens Ajax-Asynchronladen: Bei der herkömmlichen Seitenlademethode muss der Browser, nachdem er eine Anfrage an den Server gesendet hat, darauf warten, dass der Server eine Antwort zurückgibt und die gesamte Seite lädt, bevor er mit dem nächsten Schritt fortfährt.

So erstellen Sie eine leistungsstarke Webcrawler-Anwendung mit React und Python So erstellen Sie eine leistungsstarke Webcrawler-Anwendung mit React und Python Sep 26, 2023 pm 01:04 PM

So erstellen Sie eine leistungsstarke Webcrawler-Anwendung mit React und Python Einführung: Ein Webcrawler ist ein automatisiertes Programm, das zum Crawlen von Webseitendaten durch das Internet verwendet wird. Mit der kontinuierlichen Weiterentwicklung des Internets und dem explosionsartigen Datenwachstum erfreuen sich Webcrawler immer größerer Beliebtheit. In diesem Artikel wird erläutert, wie Sie mit React und Python, zwei beliebten Technologien, eine leistungsstarke Webcrawler-Anwendung erstellen. Wir werden die Vorteile von React als Front-End-Framework und Python als Crawler-Engine untersuchen und spezifische Codebeispiele bereitstellen. 1. Für

Tipps zur Scrapy-Optimierung: So reduzieren Sie das Crawling doppelter URLs und verbessern die Effizienz Tipps zur Scrapy-Optimierung: So reduzieren Sie das Crawling doppelter URLs und verbessern die Effizienz Jun 22, 2023 pm 01:57 PM

Scrapy ist ein leistungsstarkes Python-Crawler-Framework, mit dem große Datenmengen aus dem Internet abgerufen werden können. Bei der Entwicklung von Scrapy stoßen wir jedoch häufig auf das Problem, doppelte URLs zu crawlen, was viel Zeit und Ressourcen verschwendet und die Effizienz beeinträchtigt. In diesem Artikel werden einige Scrapy-Optimierungstechniken vorgestellt, um das Crawlen doppelter URLs zu reduzieren und die Effizienz von Scrapy-Crawlern zu verbessern. 1. Verwenden Sie die Attribute „start_urls“ und „allowed_domains“ im Scrapy-Crawler

Entwickeln Sie effiziente Webcrawler und Daten-Scraping-Tools mit den Sprachen Vue.js und Perl Entwickeln Sie effiziente Webcrawler und Daten-Scraping-Tools mit den Sprachen Vue.js und Perl Jul 31, 2023 pm 06:43 PM

Verwenden Sie die Sprachen Vue.js und Perl, um effiziente Webcrawler und Daten-Scraping-Tools zu entwickeln. Mit der rasanten Entwicklung des Internets und der zunehmenden Bedeutung von Daten ist auch die Nachfrage nach Web-Crawlern und Daten-Scraping-Tools gestiegen. In diesem Zusammenhang ist es eine gute Wahl, Vue.js und die Perl-Sprache zu kombinieren, um effiziente Webcrawler und Daten-Scraping-Tools zu entwickeln. In diesem Artikel wird vorgestellt, wie man ein solches Tool mit Vue.js und der Perl-Sprache entwickelt, und es werden entsprechende Codebeispiele beigefügt. 1. Einführung in Vue.js und die Perl-Sprache

Anmerkungen zur PHP-Studie: Webcrawler und Datenerfassung Anmerkungen zur PHP-Studie: Webcrawler und Datenerfassung Oct 08, 2023 pm 12:04 PM

Anmerkungen zur PHP-Studie: Webcrawler und Datenerfassung Einführung: Ein Webcrawler ist ein Tool, das automatisch Daten aus dem Internet crawlt. Es kann menschliches Verhalten simulieren, Webseiten durchsuchen und die erforderlichen Daten sammeln. Als beliebte serverseitige Skriptsprache spielt PHP auch im Bereich Webcrawler und Datenerfassung eine wichtige Rolle. In diesem Artikel wird erklärt, wie man einen Webcrawler mit PHP schreibt, und praktische Codebeispiele bereitgestellt. 1. Grundprinzipien von Webcrawlern Die Grundprinzipien von Webcrawlern bestehen darin, HTTP-Anfragen zu senden, die H-Antwort des Servers zu empfangen und zu analysieren.

Ausführlicher Einsatz von Scrapy: Wie crawlt man HTML-, XML- und JSON-Daten? Ausführlicher Einsatz von Scrapy: Wie crawlt man HTML-, XML- und JSON-Daten? Jun 22, 2023 pm 05:58 PM

Scrapy ist ein leistungsstarkes Python-Crawler-Framework, mit dem wir schnell und flexibel Daten im Internet abrufen können. Beim eigentlichen Crawling-Prozess stoßen wir häufig auf verschiedene Datenformate wie HTML, XML und JSON. In diesem Artikel stellen wir vor, wie man Scrapy zum Crawlen dieser drei Datenformate verwendet. 1. HTML-Daten crawlen und ein Scrapy-Projekt erstellen. Zuerst müssen wir ein Scrapy-Projekt erstellen. Öffnen Sie die Befehlszeile und geben Sie den folgenden Befehl ein: scrapys

See all articles