scrapy

【爬虫学习笔记day64】7.6. scrapy-redis实战--尝试改写新浪网分类资讯爬虫2

我怕爱的太早我们不能终老 提交于 2020-01-31 04:48:09
文章目录 7.6. scrapy-redis实战--尝试改写新浪网分类资讯爬虫2 将已有的新浪网分类资讯Scrapy爬虫项目,修改为基于RedisSpider类的scrapy-redis分布式爬虫项目 items.py文件 settings.py文件 spiders/sina.py 执行: 7.6. scrapy-redis实战–尝试改写新浪网分类资讯爬虫2 将已有的新浪网分类资讯Scrapy爬虫项目,修改为基于RedisSpider类的scrapy-redis分布式爬虫项目 注:items数据直接存储在Redis数据库中,这个功能已经由scrapy-redis自行实现。除非单独做额外处理(比如直接存入本地数据库等),否则不用编写pipelines.py代码。 items.py文件 # items.py # -*- coding: utf-8 -*- import scrapy import sys reload ( sys ) sys . setdefaultencoding ( "utf-8" ) class SinaItem ( scrapy . Item ) : # 大类的标题 和 url parentTitle = scrapy . Field ( ) parentUrls = scrapy . Field ( ) # 小类的标题 和 子url subTitle =

Scrapy 基础

≡放荡痞女 提交于 2020-01-30 19:42:15
1.requests 安装: -pip install requests 确认requests是否安装成功 -import requests eg : -import requests r = requests.get("htpp://www.baidu.com")# 获取百度 r.status_code #状态码 返回值 :200 说明 请求成功 t.encoding = 'utf-8' t.text #打印百度的html网页的代码 -- html 代码 --2.get方法: r =requests.get(url) request.get(url,params=None, **kwargs) url: 拟获取页面的url的链接, params: url中的额外参数,字典或字节流格式,可选 ** kwargs 可选的3.Response 对象: -属性: r.status_code:http请求的返回状态,200表示链接成功, 404表示连接失败 t.text; http响应内容的字符串形式, 即, url对应的页面内容\ r.encoding:从http header中猜测的响应内容编码方式, r.apparent_encoding: 从内容分析出的响应内容编码方式(备选编码方式) r.content :http响应内容的二进制形式4.requests库的异常:

switch between tabs and perform action on individual using Selenium

一个人想着一个人 提交于 2020-01-30 12:24:48
问题 I am trying to extract URLs, open them into a new tab and then perform some actions. My code is- urls = self.driver.find_elements_by_xpath('//div[@id="maincontent"]/table/tbody/tr/td//a[@href]') for url in urls: try: href = url.get_attribute("href")[28:] print href actions = ActionChains(self.driver) url_1 = self.driver.find_element_by_xpath('//*[@href="'+href+'"]') actions.key_down(Keys.CONTROL).click(url_1).key_up(Keys.CONTROL).perform() except Exception, e: print e actions1 = ActionChains

Python利用scrapy框架抓取链家楼盘信息

徘徊边缘 提交于 2020-01-30 00:51:03
spider_project.py from spider_project.items import SpiderProjectItem from bs4 import BeautifulSoup from scrapy.http import Request import scrapy import math import lxml class Pro_spider(scrapy.Spider): name = 'test' allow_domains = ['lianjia.com'] base_url = 'https://hz.fang.lianjia.com/loupan/' regions = { 'xihu':'西湖', 'xiacheng':'下城', 'jianggan':'江干', 'gongshu':'拱墅', 'shangcheng':'上城', 'binjiang':'滨江', 'yuhang':'余杭', 'xiaoshan':'萧山' } def start_requests(self): index = 1 for region in list(self.regions.keys()): # print(region) url = self.base_url + region + "/" +'pg{0}'.format(index) # for

[scrapy]Item Loders

喜夏-厌秋 提交于 2020-01-29 04:19:54
Items Items就是结构化数据的模块,相当于字典,比如定义一个{"title":"","author":""},items_loders就是从网页中提取title和author字段填充到items里,比如{"title":"初学scrapy","author":"Alex"},然后items把结构化的数据传给pipeline,pipeline可以把数据插入进MySQL里. 实例 items.py import scrapy class JobBoleArticleItem(scrapy.Item): title = scrapy.Field() create_date = scrapy.Field() url = scrapy.Field() url_object_id = scrapy.Field() front_image_url = scrapy.Field() front_image_path = scrapy.Field() praise_nums = scrapy.Field() comment_nums = scrapy.Field() fav_nums = scrapy.Field() jobbole.py # -*- coding: utf-8 -*- import scrapy from scrapy.http import Request from

爬虫系列之第4章scrapy框架

柔情痞子 提交于 2020-01-28 04:58:17
一 scrapy框架简介 1 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。 整体架构大致如下: Components: 1、引擎(EGINE) 引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。 2、调度器(SCHEDULER) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 3、下载器(DOWLOADER) 用于下载网页内容, 并将网页内容返回给EGINE,下载器是建立在twisted这个高效的异步模型上的 4、爬虫(SPIDERS) SPIDERS是开发人员自定义的类,用来解析responses,并且提取items

基于Scrapy分布式爬虫打造搜索引擎

眉间皱痕 提交于 2020-01-28 00:45:47
一,学习目的 获取想要的知识 二,环境配置和基础知识铺垫 1.pycharm 的安装和简单使用 ide : pycharm 数据库:mysql , redis , elasticsearch 开发环境:virtualenv 2.mysql 和navicat的安装和使用 windows下安装python 虚拟环境的安装和配置 3级标题 爬取真实数据 Scrapy 突破反爬虫技术 Scrapy进阶开发 Scrapy redis分布式爬虫 elasticsearch django 实现搜索引擎 2级标题 来源: CSDN 作者: shlshlshk 链接: https://blog.csdn.net/shlshlshk/article/details/104095728

爬虫之scrapy框架

本小妞迷上赌 提交于 2020-01-27 13:07:56
一 scrapy框架简介 1 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。 整体架构大致如下: """ Components: 1、引擎(EGINE) 引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。 2、调度器(SCHEDULER) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 3、下载器(DOWLOADER) 用于下载网页内容, 并将网页内容返回给EGINE,下载器是建立在twisted这个高效的异步模型上的 4、爬虫(SPIDERS) SPIDERS是开发人员自定义的类,用来解析responses,并且提取items

Scrapy多线程爬虫原理

喜你入骨 提交于 2020-01-27 06:49:19
一:多线程爬虫原理 二:Scrapy框架 定义: Scrapy是基于Python实现,方便爬取网站数据、提取结构性数据的应用框架。 底层: 使用Twisted异步网络框架来处理网络通讯,加快下载速度。 不用手动实现异步框架,包含了多种中间件接口,非常灵活。 Scrapy 运行架构流程图: 组件说明: Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。 Scheduler(调度器): 负责接收引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。 Downloader(下载器):负责下载引擎发送的所有Requests请求,并将其获取到的Responses交还给引擎,由引擎交给Spider来处理。 Spider(爬虫):负责处理所有Responses,分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入调度器 Item Pipeline(管道):负责处理Spider中获取到的Item,并进行后期处理(如详细分析、过滤、存储等). Downloader Middlewares(下载中间件):类似一个可以自定义扩展下载功能的组件。 Spider Middlewares(Spider中间件)

5、爬虫系列之scrapy框架

梦想的初衷 提交于 2020-01-26 23:55:19
一 scrapy框架简介 1 介绍 (1) 什么是Scrapy?   Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板。对于框架的学习,重点是要学习其框架的特性、各个功能的用法即可。 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。 整体架构大致如下: ''' Components: 1、引擎(EGINE) 引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。 2、调度器(SCHEDULER) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列,