crawlspider示例和登录

简介: 创建crawlspiderscrapy startproject wxappcd wxappscrapy genspider -t crawl wxappspider www.
  • 创建crawlspider
scrapy startproject wxapp
cd wxapp
scrapy genspider -t crawl wxappspider www.wxapp-union.com

wxappspider.py文件中:

# -*- coding: utf-8 -*-

'''微信小程序教程页面全部爬取'''
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from wxapp.items import WxappItem

class WxappSpiderSpider(CrawlSpider):
    name = 'wxapp_spider'
    allowed_domains = ['wxapp-union.com']
    start_urls = ['http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1']

    rules = (
        # 提取列表页,不用调用回调函数,因为列表页没有什么要爬的
        Rule(LinkExtractor(allow=r'.*?page=\d'), follow=True),
        # 提取具体详情页,调用回调函数,解析具体字段,不继续跟进爬取
        Rule(LinkExtractor(allow=r'.*?article-.*?\.html'),callback='parse_item',follow=False)
    )

    def parse_item(self, response):
        item = WxappItem()
        title = response.xpath('//h1[@class="ph"]/text()').extract()
        item['title'] = title
        yield item

pipelines.py文件中:


from scrapy.exporters import JsonLinesItemExporter

# 保存json文件中
class WxappPipeline(object):
    def __init__(self):
        self.file = open('wxapp.json','wb',)
        self.exporter = JsonLinesItemExporter(self.file,ensure_ascii=False,encoding='utf-8')
    def process_item(self, item, spider):
        self.exporter.export_item(item)
        return item

    def close_spider(self,item,spider):
        self.file.close()

item.py更改的地方:

ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 1
DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
    'Referer': 'http://www.wxapp-union.com/article-4527-1.html'
}
ITEM_PIPELINES = {
   'wxapp.pipelines.WxappPipeline': 300,
}

登录


'''登陆人人网
重写start_requests方法来实现登录'''

import scrapy


class RenrenSpider(scrapy.Spider):
    name = 'zhihu'
    allowed_domains = ['www.renren.com']
    start_urls = ['http://www.renren.com/']

    def start_requests(self):
        url= 'http://www.renren.com/PLogin.do'
        data = {
            'email':'','password':''
        }
        yield scrapy.FormRequest(url,formdata=data,callback=self.parse)


    def parse(self, response):
        pass
目录
相关文章
|
10月前
|
Java
钉钉第三方扫码登录提示 code: 403, 没有调用该接口的权限,接口权限申请参考
钉钉第三方扫码登录提示 code: 403, 没有调用该接口的权限,接口权限申请参考 ,但是我明明申请了Contact.User.Read 这个权限
340 1
|
1月前
|
JSON 小程序 前端开发
创建一个属于自己的小程序(注册开发账号)
介绍如何创建微信小程序账号,包括注册流程、下载安装微信开发者工具、创建项目以及项目结构介绍。
创建一个属于自己的小程序(注册开发账号)
|
4月前
|
运维 安全 数据管理
数据管理DMS产品使用合集之windows上安装网关时,token都是新的,报错:无效的token,该怎么办
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
56 4
|
4月前
|
分布式计算 DataWorks API
DataWorks操作报错合集之如何解决API调用报400,文件夹找不到的错误
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
消息中间件 Serverless Go
Serverless 应用引擎操作报错合集之通过自定义域名配置jwt认证,始终报错:"Code": "JWTTokenIsInvalid",是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
101 2
|
3月前
|
PHP 开发工具
tp5+微信公众号服务器配置时使用官方sdk还是token验证失败
tp5+微信公众号服务器配置时使用官方sdk还是token验证失败
33 0
|
4月前
|
安全 API 数据安全/隐私保护
​验证码邮件API有哪些?分析最好的3个接口平台
验证码邮件API如AOKSend、SendGrid和Mailgun是用户身份验证的关键工具。这些API提供高效、可靠的邮件发送服务,确保验证码的安全传输。AOKSend以其快速发送和易用性著称,SendGrid则以全面功能和扩展性见长,而Mailgun则以灵活性和高送达率闻名。开发者可以根据需求选择合适的API,通过示例代码轻松集成到应用中,增强安全性和用户体验。
|
存储
​SpringSecurity-7-自定义AuthenticationProvider实现图形验证码
上一章节我们介绍了如何使用过滤器(Filter)实现图形验证,这是属于Servlet层面,比较简单容易理解。那么这次我们介绍SpringSecurity提供的另一种比较高端的实现图形化验证码,这就是AuthenticationProvider自定义认证。
152 0
|
5月前
|
存储 缓存 前端开发
自定义OAuth2组件实现对授权码登录模式的封装
所谓OAuth2其实就是Open Authorization,即开放授权,是一种授权机制或者说是一种协议。OAuth2允许用户授权第三方应用访问其存储在开放平台(授权服务器)中的数据而不需要提供密码。授权服务器根据OAuth2协议标准制订一套授权的API,第三方网站接入开放平台之后即可通过其提供的API来实现用户授权和获取授权服务器中用户的信息的功能。