使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
代码如下:
#!/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的数据库文件,所有抓取到的数据都会存在这里。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Scrapy는 WeChat 공개 계정의 기사 크롤링 및 분석을 구현합니다. WeChat은 최근 몇 년 동안 인기 있는 소셜 미디어 애플리케이션이며, 여기서 운영되는 공개 계정도 매우 중요한 역할을 합니다. 우리 모두 알고 있듯이 WeChat 공개 계정은 정보와 지식의 바다입니다. 왜냐하면 각 공개 계정은 기사, 그래픽 메시지 및 기타 정보를 게시할 수 있기 때문입니다. 이 정보는 언론보도, 학술연구 등 다양한 분야에서 폭넓게 활용될 수 있습니다. 그래서 이 글에서는 Scrapy 프레임워크를 사용하여 WeChat 공개 계정 글을 크롤링하고 분석하는 방법을 소개하겠습니다. Scr

Scrapy는 인터넷에서 관련 정보를 빠르고 쉽게 얻을 수 있는 Python 기반 크롤러 프레임워크입니다. 이 기사에서는 Scrapy 사례를 사용하여 LinkedIn에서 회사 정보를 크롤링하는 방법을 자세히 분석합니다. 대상 URL 결정 먼저 대상이 LinkedIn의 회사 정보임을 분명히 해야 합니다. 따라서 LinkedIn 회사 정보 페이지의 URL을 찾아야 합니다. LinkedIn 웹사이트를 열고 검색창에 회사 이름을 입력한 후

Scrapy는 웹사이트에서 데이터를 빠르고 효율적으로 얻을 수 있는 오픈 소스 Python 크롤러 프레임워크입니다. 그러나 많은 웹사이트는 Ajax 비동기 로딩 기술을 사용하므로 Scrapy가 데이터를 직접 얻는 것이 불가능합니다. 이 기사에서는 Ajax 비동기 로딩을 기반으로 한 Scrapy 구현 방법을 소개합니다. 1. Ajax 비동기 로딩 원리 Ajax 비동기 로딩: 전통적인 페이지 로딩 방법에서는 브라우저가 서버에 요청을 보낸 후 서버가 응답을 반환할 때까지 기다려야 다음 단계로 진행하기 전에 전체 페이지를 로드해야 합니다.

React와 Python을 사용하여 강력한 웹 크롤러 애플리케이션을 구축하는 방법 소개: 웹 크롤러는 인터넷을 통해 웹 데이터를 크롤링하는 데 사용되는 자동화된 프로그램입니다. 인터넷의 지속적인 발전과 데이터의 폭발적인 증가로 인해 웹 크롤러는 점점 더 대중화되고 있습니다. 이 기사에서는 두 가지 널리 사용되는 기술인 React와 Python을 사용하여 강력한 웹 크롤러 애플리케이션을 구축하는 방법을 소개합니다. 프론트엔드 프레임워크인 React와 크롤러 엔진인 Python의 장점을 살펴보고 구체적인 코드 예제를 제공합니다. 1.

Scrapy는 인터넷에서 대량의 데이터를 얻는 데 사용할 수 있는 강력한 Python 크롤러 프레임워크입니다. 그러나 Scrapy를 개발할 때 중복된 URL을 크롤링하는 문제에 자주 직면하게 되는데, 이는 많은 시간과 자원을 낭비하고 효율성에 영향을 미칩니다. 이 기사에서는 중복 URL의 크롤링을 줄이고 Scrapy 크롤러의 효율성을 향상시키는 몇 가지 Scrapy 최적화 기술을 소개합니다. 1. Scrapy 크롤러의 start_urls 및 allowed_domains 속성을 사용하여

Scrapy는 인터넷에서 빠르고 유연하게 데이터를 얻는 데 도움이 되는 강력한 Python 크롤러 프레임워크입니다. 실제 크롤링 과정에서 HTML, XML, JSON 등 다양한 데이터 형식을 접하는 경우가 많습니다. 이 기사에서는 Scrapy를 사용하여 세 가지 데이터 형식을 각각 크롤링하는 방법을 소개합니다. 1. HTML 데이터를 크롤링하고 Scrapy 프로젝트를 생성합니다. 먼저 Scrapy 프로젝트를 생성해야 합니다. 명령줄을 열고 다음 명령을 입력하세요: scrapys

Scrapy 크롤러에서 Selenium 및 PhantomJSScrapy 사용 Scrapy는 Python 기반의 뛰어난 웹 크롤러 프레임워크이며 다양한 분야의 데이터 수집 및 처리에 널리 사용되었습니다. 크롤러 구현 시 특정 웹사이트에서 제공하는 콘텐츠를 얻기 위해 브라우저 작업을 시뮬레이션해야 하는 경우가 있습니다. 이 경우 Selenium 및 PhantomJS가 필요합니다. Selenium은 브라우저에서 인간 작업을 시뮬레이션하여 웹 애플리케이션 테스트를 자동화할 수 있습니다.

Vue.js 및 Perl 언어를 사용하여 효율적인 웹 크롤러 및 데이터 스크래핑 도구를 개발하십시오. 최근 인터넷의 급속한 발전과 데이터의 중요성이 증가함에 따라 웹 크롤러 및 데이터 스크래핑 도구에 대한 수요도 증가했습니다. 이러한 맥락에서 Vue.js와 Perl 언어를 결합하여 효율적인 웹 크롤러와 데이터 스크래핑 도구를 개발하는 것은 좋은 선택입니다. 이 기사에서는 Vue.js 및 Perl 언어를 사용하여 이러한 도구를 개발하는 방법을 소개하고 해당 코드 예제를 첨부합니다. 1. Vue.js 및 Perl 언어 소개
