requests 分类多级页面_scrapy框架爬取多级页面

spides.py

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

import scrapy

from weather.items import WeatherItem

from scrapy.crawler import CrawlerProcess

import re

'''

多级分类爬取

'''

class IgxSpider(scrapy.Spider):

name = 'igx_result'

allowed_domains = ['www.igxpt.com']

# start_urls = ['http://www.igxpt.com/cate/192/']

def start_requests(self):

start_urls = ['http://www.igxpt.com/cate/{}/'.format(str(i)) for i in range(192, 194)] #这里我是简写的,当然也可以进入主页面,爬取这些url 那就要多一级分类了

for url in start_urls:

yield scrapy.Request(url=url)

def parse(self, response):

'''得到分页页码-----start'''

page = response.xpath('//div[@class="dataTables_paginate paging_simple_numbers"]/span/text()').extract_first()

ret = re.search('共(\d+)页', page)

number = ret.group(1)

#print(page,number)

page_link = response.xpath('//ul[@class="pagination"]/li/a/@href').extract_first()

current_url = 'http://www.igxpt.com'+page_link.split('=')[0]+'='

'''得到分页页码-----end'''

clearfix = response.xpath('//ul[@class="shop-list-recommend mt20 clearfix"]/li')

for li in clearfix:

item = WeatherItem()

item['name'] = li.xpath('./a/p[1]/text()').extract_first()

url_img = li.xpath('./a/div/img/@src').extract_first()

item['url'] = "http://www.igxpt.com" + (url_img)

price_alia = li.xpath('./a/p[2]/span[@class="blue"]/text()').extract_first()

item['price'] = price_alia + "元"

yield item

# 拼接url 递归调用分页

urls = [current_url + '{}'.format(str(i)) for i in range(1, int(number) + 1)]

for se in urls:

yield scrapy.Request(url=se, callback=self.parse)

items.py

import scrapy

class WeatherItem(scrapy.Item):

# define the fields for your item here like:

name = scrapy.Field()

url = scrapy.Field()

price= scrapy.Field()

pipelines.py

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

# Define your item pipelines here

#

# Don't forget to add your pipeline to the ITEM_PIPELINES setting

# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html

import pymysql

import urllib.request

class WeatherPipeline(object):

def process_item(self, item, spider):

name = item['name']

url = item['url']

price= item['price']

connection = pymysql.connect(

host='127.0.0.1',

user='root',

passwd='root',

db='scrapy',

# charset='utf-8',

cursorclass=pymysql.cursors.DictCursor

)

try:

# '''下载图片'''

# imgname = url.split('/')[-1]

# path = r"D:\Python\weather\weather\images\%s" % (imgname)

# urllib.request.urlretrieve(url, filename=path)

'''插入数据库'''

with connection.cursor() as cursor:

sql = """INSERT INTO `goods_info_detail` (name, url, price) VALUES (%s, %s, %s) """

cursor.execute(

sql,(name,url,price)

)

connection.commit()

except ValueError as e:

print(e)

finally:

connection.close()

return item

settings.py

LOG_LEVEL = 'WARNING'

BOT_NAME = 'weather'

SPIDER_MODULES = ['weather.spiders']

NEWSPIDER_MODULE = 'weather.spiders'

'''

管道

'''

ITEM_PIPELINES = {

'weather.pipelines.WeatherPipeline': 300,

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

T-SQL:SQL Server-数据库查询语句基本查询

ylbtech-SQL Server-Basic:SQL Server-数据库查询语句基本查询SQL Server 数据库查询语句基本查询。 1,数据库查询语句基本查询数据库SQL ServerOracle基本语句 select select * from titles select title_id,title,price,pub_id from titles select * from title …

C:打印菱形(自己的方法)

//-------------------&#xff0a;打印菱形&#xff0a;--------------------- int i,j,k; int n; printf("请输入一个奇数n&#xff1a;"); scanf("%d",&n); for (i0; i<n/2; i) { for (j0; j<n/2-i; j) { printf(" "); } for (k0; …

修改无效_修改劳动合同日期被认定无效,青岛一企业被判赔双倍工资

劳动合同法规定&#xff0c;用人单位超过一个月不满一年未与劳动者订立书面劳动合同的&#xff0c;应当向劳动者每月支付二倍的工资。在现实中&#xff0c;经常遇到的情况是续签合同时&#xff0c;已经到期的劳动合同与新合同之间的空档期&#xff0c;如果管理混乱或者遇到特殊…

HDUOJ-----2065红色病毒问题

"红色病毒"问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3339 Accepted Submission(s): 1422 Problem Description医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相…

下拉框_jQuery 美化界面的下拉框

插件简介之前我们介绍过一款基于jQuery多级联动美化版Select下拉框&#xff0c;很多朋友都非常喜欢&#xff0c;可见经过美化过的下拉框的确可以让你的网页更为精妙。今天我们要介绍的这款美化界面下拉框也是基于jQuery的&#xff0c;它的特点是可以通过上下箭头微调选择&#…

字体缩放 SignedDistanceField

Unity中如果使用位图字体&#xff0c;在缩放较大的情况下&#xff0c;字体失真严重&#xff0c;使用矢量字体可能会存在内存过大的情况。 Signed Distance Field Font Rendering将字体保存在图片内&#xff0c;但是图片存储的并不是像素&#xff0c;而是距离&#xff0c;再通过…

【转】SQL删除重复数据方法

例如&#xff1a; id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c …

python批处理栅格转点_python获取栅格点和面值的实现

1、获取指定位置的点值&#xff1a;OutputFile open(statisticResultTXT, w)cellvaluearcpy.GetCellValue_management(inputfilepathfilenname".tif",staionXY, "1")OutputFile.write(stationID"_"filenname""str(cellvalue)\n)Outpu…

看看别人的演讲

淘宝&#xff1a;http://www.w3cmark.com/2014/137.html 转载于:https://www.cnblogs.com/gaoxue/p/4330728.html

jsp中获取WebContent路径

方法一&#xff1a; 1 <script type"text/javascript" src"../js/data.js"></script> 方法2&#xff1a; 1 <% 2 String path request.getContextPath(); 3 String basePath request.getScheme()"://"request.getServerName()&…

layui文本框填充值_layui输入框中只允许输入整数的实现方法

如下所示&#xff1a;//转化正整数function zhzs(value){value value.replace(/[^\d]/g,);if(!value){value parseInt(value);}return value;}其他的正则function clearNoNum(obj){obj.value obj.value.replace(/[^\d.]/g,""); //清除“数字”和“.”以外的字符ob…

YQL获取天气

$(function () { $.getJSON("http://query.yahooapis.com/v1/public/yql?callback?", { q: "select * from json where urlhttp://m.weather.com.cn/data/101210101.html", format: "json" }, function (data) { if (data.query.results) { v…

如何判断平台工具集去做条件编译(VC++目录、预处理器定义、$(PlatformToolsetVersion))...

作者&#xff1a;zyl910 从VS2010开始&#xff0c;提供了一个平台工作集&#xff08;Platform ToolSet&#xff09;选项用于配制vc编译版本。到了VS2012&#xff0c;更是因为默认平台工具集不支持WindowsXP&#xff0c;导致经常需要切换到xp版平台工具集&#xff0c;VS2013也是…

gerber文件怎么导贴片坐标_利用Gerber文件生成贴片坐标及元件位置图的方法技巧...

利用Gerber文件生成贴片坐标及元件位置图的方法技巧利用Gerber文件生成贴片坐标及元件位置图的方法技巧2010-10-11 21:59Gerber文件是所有电路设计软件都可以产生的文件&#xff0c;在电子组装行业又称为模版文件(stencil data),在PCB制造业又称为光绘文件。可以说Gerber文件是…

c#语言基础编程-转义符

C#转义字符: 引言 为了在程序中能够控制字符的输出以及区分开双引号和单引号&#xff08;双引号和单引号在程序中标示里面的内容为字符串和字符&#xff09;&#xff0c;所以用一种特殊的字符常量&#xff1b;是以反斜线”\”开头&#xff0c;后跟一个或几个字符。让其具有特定…

SQL语言的分类

SQL语言的分类 SQL语言共分为四大类&#xff1a;数据查询语言DQL&#xff0c;数据操纵语言DML&#xff0c; 数据定义语言DDL&#xff0c;数据控制语言DCL。 1 数据查询语言DQL Q Query 数据查询语言DQL用于检索数据库基本结构是由SELECT子句&#xff0c;FROM子句&#xff0c;…

图片图层隐写_【软件】imageIN · 图影-隐藏文件到图片,简单轻快的图片隐写工具...

还记得以前的图种制作吗&#xff0c;今天给大家分形下一个相关的工具。度盘下载(imageIN Beta1.0 (2.18MB)) &#xff1a;pan.baidu.com/s/1hqve8YS官网下载&#xff1a;本地下载这是一个能把图片中嵌入文件、文本、隐藏水印的隐写工具这种嵌入是基于图像本身的而不是基于文件的…

使用eclipse进行web开发的3个lib文件夹

1、右击project>Build Path>Configure Build Path&#xff08;一般是在你的项目文件夹中手动创建一个lib文件夹&#xff0c;里面设置若干子文件夹存放不同的jar包&#xff0c;然后通过Configure Build Path导入&#xff09; 存放&#xff1a;eclipse用来编译java文件、编…

mysql 密码长度约束_MySQL简单操作【1、在cmd下MySQL的运行及简单增删改查】

上篇文章介绍了在Windows10下安装MySQL&#xff0c;本篇文章介绍cmd下简单的操作。1、登录 MySQL当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:mysql -h 主机名 -u 用户名 -p参数说明&#xf…

asp.net中,%#%,%=%和%%分别是什么意思,有什么区别

在asp.net中经常出现包含这种形式<%%>的html代码,总的来说包含下面这样几种格式&#xff1a; 一. <%%> 这种格式实际上就是和asp的用法一样的&#xff0c;只是asp中里面是vbscript或者javascript代码&#xff0c;而在asp.net中是.net平台下支持的语言。 特别注意:…