scrapy爬虫自动爬取的实例

Spider爬取过程

以初始的URL初始化Request,并设置回调函数。当该request下载完毕并返回时,将生成response,并作为参数传递给该回调函数。
spider中初始的request是通过调用start_requests()来获取的。start_request()读取start_urls中的URL,并以parse为回调函数生成Request。
在回调函数内分析返回的(网页)内容,返回 Item 对象或者 Request 或者一个包括二者的可迭代容器。返回的Request对象之后会经过Scrapy处理,下载相应的内容并调用设置的callback函数(函数可相同)。
在回调函数内,您可以使用选择器(Selector、BeautifulSoup、lxml等)来分析网页内容,并根据分析的数据生成item。
最后,由spider返回的item将被存到数据库(由某些Item Pipeline处理)或使用 Feed exports存入到文件中。
Spider样例

 代码如下 复制代码

import scrapy
from myproject.items import MyItem

class MySpider(scrapy.Spider):
    '''
    一个回调函数中返回多个Request对象和Item
    '''
    name = 'example.com'
    allowed_domains = ['example.com']
    start_urls = [
        'http://www.example.com/1.html',
        'http://www.example.com/2.html',
        'http://www.example.com/3.html',
    ]

    def parse(self, response):
        sel = scrapy.Selector(response)
        for h3 in response.xpath('//h3').extract():
            yield MyItem(title=h3)         

        for url in response.xpath('//a/@href').extract():
            yield scrapy.Request(url, callback=self.parse)

CrawlSpider样例

 代码如下 复制代码

import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor
 
class MySpider(CrawlSpider):
    name = 'example.com'
    allowed_domains = ['example.com']
    start_urls = ['http://www.example.com']
 
    # 在如下的规则中,第一条表示匹配category.php但是不匹配subsection.php(没有callback意味着follow为True表示跟进链接)
   
    # 在如下的规则中,第二条表示表示匹配item.php,并使用spider的parse_item方法进行分析。
   
    rules = (
        Rule(LinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),
        Rule(LinkExtractor(allow=('item\.php', )), callback='parse_item'),
    )
 
    def parse_item(self, response):
        self.log('Hi, this is an item page! %s' % response.url)
 
        item = scrapy.Item()
        item['id'] = response.xpath('//td[@id="item_id"]/text()').re(r'ID: (\d+)')
        item['name'] = response.xpath('//td[@id="item_name"]/text()').extract()
        item['description'] = response.xpath('//td[@id="item_description"]/text()').extract()
        return item

时间: 2024-09-17 04:47:07

scrapy爬虫自动爬取的实例的相关文章

scrapy爬虫不能自动爬取所有页面

问题描述 scrapy爬虫不能自动爬取所有页面 学习scrapy第三天,在爬取wooyun白帽子精华榜的时候,不能爬取所有的页面. items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.html import scrapy class Wooyu

使用python scrapy框架写爬虫如何爬取搜狐新闻的参与人数?

问题描述 使用python scrapy框架写爬虫如何爬取搜狐新闻的参与人数? URL如下:http://quan.sohu.com/pinglun/cyqemw6s1/442631551 参与人数该如何爬取,找不到切入点,新手一头雾水-- 非常感谢!! 解决方案 这个是可能异步ajax返回的,所以需要用selenium等webdriver来处理 解决方案二: http://www.shenjianshou.cn/

python 爬虫,爬取google搜索结果,爬一段时间就被噤掉了,怎么破?

问题描述 python 爬虫,爬取google搜索结果,爬一段时间就被噤掉了,怎么破? 已经进行了一些伪装,但是还是不够,希望有经验的哥们给个指点 def google_search(keyword,page): proxy_handler1 = urllib2.ProxyHandler({"https":"https://..........1:8080"}) proxy_handler2 = urllib2.ProxyHandler({"https&q

Python简易爬虫,爬取斗鱼颜值美女!!

代码简单用作初学Python,只要运行脚本图片自动下载根据,斗鱼网页更新而更新!! QQ学习交流群127591054 JackChiang Python版本3.5 <1>版本1,效果如图片,存在问题不能给图片加自己的名字,代码不够灵活.版本2解决这个问题 #coding=utf-8 #爬取斗鱼颜值妹子图片 import re import urllib import time #定义为方法 def getHTML(url): page = urllib.urlopen(url) html=pa

[python爬虫] Selenium爬取新浪微博内容及用户信息

在进行自然语言处理.文本分类聚类.推荐系统.舆情分析等研究中,通常需要使用新浪微博的数据作为语料,这篇文章主要介绍如果使用Python和Selenium爬取自定义新浪微博语料.因为网上完整的语料比较少,而使用Selenium方法有点简单.速度也比较慢,但方法可行,同时能够输入验证码.希望文章对你有所帮助~ 爬取结果 首先可以爬取用户ID.用户名.微博数.粉丝数.关注数及微博信息.其中微博信息包括转发或原创.点赞数.转发数.评论数.发布时间.微博内容等等.如下图所示: 同时也可以爬取微博的众多用户

网络爬虫-wget爬取网页失败问题

问题描述 wget爬取网页失败问题 用wget工具爬取指定url的页面,我的url是www.baidu.com时,就没问题,要是这个url就爬不下来https://www.baidu.com/s?wd=1446544426%40qq.com&rsv_spt=1&rsv_iqid=0x93249e020001a818&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=98050039_dg&rsv_en

scrapy自动多网页爬取CrawlSpider类(五)

一.目的. 自动多网页爬取,这里引出CrawlSpider类,使用更简单方式实现自动爬取. 二.热身. 1.CrawlSpider (1)概念与作用: 它是Spider的派生类,首先在说下Spider,它是所有爬虫的基类,对于它的设计原则是只爬取start_url列表中的网页,而从爬取的网页中获取link并继续爬取的工作CrawlSpider类更适合. (2)使用: 它与Spider类的最大不同是多了一个rules参数,其作用是定义提取动作.在rules中包含一个或多个Rule对象,Rule类与

[python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈

        我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的.首先通过这篇文章,你能学到以下几点:        1.可以了解Python简单爬取图片的一些思路和方法         2.学习Selenium自动.测试分析动态网页和正则表达式的区别和共同点         3.了解作者最近学习得比较多的搜索引擎和知识图谱的整体框架         4.同时作者最近找工作,里面的一些杂谈和建议也许对即将成为应届生的你有所帮助         5.当

使用Scrapy爬取知乎网站

本文主要记录使用使用 Scrapy 登录并爬取知乎网站的思路.Scrapy的相关介绍请参考 使用Scrapy抓取数据. 相关代码,见 https://github.com/javachen/scrapy-zhihu-github ,在阅读这部分代码之前,请先了解 Scrapy 的一些基本用法. 使用cookie模拟登陆 关于 cookie 的介绍和如何使用 python 实现模拟登陆,请参考python爬虫实践之模拟登录. 从这篇文章你可以学习到如何获取一个网站的 cookie 信息.下面所讲述