手动发送请求

import scrapy

from choutiSpider.items import ChoutispiderItem

class ChoutiSpider(scrapy.Spider):
name = 'chouti'
# allowed_domains = ['www.xxx.com']
start_urls = ['https://dig.****.com/r/scoff/hot/1'] # 通用模板 url
url = 'https://dig.****.com/r/scoff/hot/%s'
page_num = 1 def parse(self, response):
div_list = response.xpath('//div[@id="content-list"]/div')
# print(div_list) print(self.page_num)
for div in div_list:
content = div.xpath('./div[@class="news-content"]/div[1]/a/text()').extract_first().strip()
author = div.xpath('./div[@class="news-content"]/div[2]/a[4]/b/text()').extract_first()
# print(content, author)
item = ChoutispiderItem()
item['author'] = author
item['content'] = content
# 提交数据 到管道中
yield item
# 手动发送请求 分页爬取
if self.page_num < 120:
self.page_num += 1
new_url = self.url % self.page_num
# 发送请求 提交
yield scrapy.Request(url=new_url, callback=self.parse)

post 请求发送

# 在scrapy框架中默认情况下cookie会被自动处理,无需手动!

class PostdemoSpider(scrapy.Spider):
name = 'postdemo'
allowed_domains = ['www.xxx.com']
start_urls = ['https://fanyi.****.com/sug']
# 调用父类的 发送请求的 方法
def start_requests(self):
for url in self.start_urls:
data = {
'kw': 'cat'
}
yield scrapy.FormRequest(url=url, formdata=data, callback=self.parse) def parse(self, response):
print(response.text)

在scrapy框架中默认情况下cookie会被自动处理,无需手动!

settings 配置:

# Disable cookies (enabled by default)
# COOKIES_ENABLED = False

请求传参:

  • 二级详情页面 的 item 传递
import scrapy

from boosPro.items import BoosproItem

class BoosSpider(scrapy.Spider):
name = 'boos'
# allowed_domains = ['www.xxx.com']
start_urls = ['https://www.****.com/c101010100/?query=python%E7%88%AC%E8%99%AB&page=1'] url = 'https://www.****.com/c101010100/?query=python%E7%88%AC%E8%99%AB&page=%s'
page_num = 1 def parse(self, response):
li_list = response.xpath('//div[@class="job-list"]/ul/li')
for li in li_list:
item = BoosproItem()
title = li.xpath('.//div[@class="job-title"]/text()').extract_first()
# 薪资 salary
salary = li.xpath('.//div[@class="info-primary"]/h3/a/span/text()').extract_first()
# 公司 company
company = li.xpath('.//div[@class="company-text"]/h3/a/text()').extract_first()
detail_url = 'https://www.zhipin.com' + li.xpath('.//div[@class="info-primary"]/h3/a/@href').extract_first()
item['title'] = title
item['salary'] = salary
item['company'] = company # 对详情页的url进行手动请求的发送
yield scrapy.Request(url=detail_url, callback=self.parsrDetail, meta={'item': item}) if self.page_num <= 3:
self.page_num += 1
newUrl = self.url % self.page_num
yield scrapy.Request(url=newUrl, callback=self.parse) # 用来解析详情页的相关的数据
def parsrDetail(self, response):
# 接收meta
item = response.meta['item']
job_desc = response.xpath('//*[@id="main"]/div[3]/div/div[2]/div[2]/div[1]/div//text()').extract()
company_content = response.xpath('//*[@id="main"]/div[3]/div/div[2]/div[2]/div[2]/div/text()').extract_first() job_desc = ' '.join(job_desc)
item['job_desc'] = job_desc
item['company_content'] = company_content
# print(job_desc, 1111111) yield item

Scrapy 框架 手动发送请求 POST 请求的发送的更多相关文章

  1. scrapy框架的日志等级和请求传参, 优化效率

    目录 scrapy框架的日志等级和请求传参, 优化效率 Scrapy的日志等级 请求传参 如何提高scripy的爬取效率 scrapy框架的日志等级和请求传参, 优化效率 Scrapy的日志等级 在使 ...

  2. scrapy框架之日志等级和请求传参-cookie-代理

    一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy的日志信息. - 日志信息的种类: ERROR : 一般错误 ...

  3. Scrapy框架之日志等级和请求传参

    一.Scrapy的日志等级 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy的日志信息. 1.日志等级(信息种类) ERROR:错误 WARN ...

  4. 13.scrapy框架的日志等级和请求传参

    今日概要 日志等级 请求传参 如何提高scrapy的爬取效率 今日详情 一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是s ...

  5. scrapy框架的日志等级和请求传参

    日志等级 请求传参 如何提高scrapy的爬取效率 一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy的日志信息 ...

  6. scrapy框架的日志等级和请求参数

    一 . Scrapy的日志等级 - 在使用 scrapy crawl xxx 允许程序时,在终端里打印输出的就是scrapy的日志信息 - 日志信息的种类 : ERROR : 错误信息 WARNING ...

  7. 爬虫开发10.scrapy框架之日志等级和请求传参

    今日概要 日志等级 请求传参 今日详情 一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy的日志信息. - 日志 ...

  8. 13,scrapy框架的日志等级和请求传参

    今日概要 日志等级 请求传参 如何提高scrapy的爬取效率 一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy ...

  9. 12 Scrapy框架的日志等级和请求传参

    一.Scrapy的日志等级 - 在使用scrapy crawl spiderFileName运行程序时,在终端里打印输出的就是scrapy的日志信息. - 日志信息的种类: ERROR : 一般错误 ...

随机推荐

  1. [android] 分析setting源代码获取SD卡大小

    保存文件到sd卡需要判断sd卡的大小,通过查看android系统的自带应用的源代码,得到方法,sdk下面的source是sdk的源代码,包含的是android.Jar下面的所有class的源代码.在a ...

  2. python学习笔记(一)、列表和元祖

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...

  3. [leetcode]1007. 行相等的最少多米诺旋转

    在一排多米诺骨牌中,A[i] 和 B[i] 分别代表第 i 个多米诺骨牌的上半部分和下半部分.(一个多米诺是两个从 1 到 6 的数字同列平铺形成的 —— 该平铺的每一半上都有一个数字.) 我们可以旋 ...

  4. 4. explain简介

    一.是什么 使用 explain 关键字可以模拟优化器执行SQl查询语句,从而知道 mysql 是如何处理你的sql语句的.分析你的查询语句或是表的结构的性能瓶颈. 二.能干嘛 表的读取顺序 数据读取 ...

  5. Mybatis框架基础支持层——解析器模块(2)

    解析器模块,核心类XPathParser /** * 封装了用于xml解析的类XPath.Document和EntityResolver */ public class XPathParser { / ...

  6. MySQL指令笔记

    -- 双中划线+空格: 单行注释, 与#相同 -- 链接数据库 mysql.exe -h localhost -P3306 -uroot -p -- 查看服务器的对外处理字符集 show variab ...

  7. 汇编语言--微机CPU的指令系统(五)(比较运算指令)

    (7)比较运算指令 在程序中,我们要时常根据某个变量或表达式的取值去执行不同指令,从而使程序表现出有不同的功能.为了配合这样的操作,在CPU的指令系统中提供了各种不同的比较指令.通过这些比较指令的执行 ...

  8. JavaScript定时器实现的原理分析

    原文链接:http://www.cnblogs.com/st-leslie/p/6082450.html 一.储备知识 在我们在项目中一般会遇见过这样的两种定时器,第一种是setTimeOut,第二种 ...

  9. JavaScript是如何工作: 深入探索WebSocket和HTTP/2与SSE + 如何选择正确的路径!

    原文:<JavaScript是如何工作: 深入探索 websocket 和HTTP/2与SSE +如何选择正确的路径! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 文章底部分 ...

  10. input属性为number时,如何去掉+、-号?

    直接上答案 <style> input[type='number']{-moz-appearance:textfield;} input[type=number]::-webkit-inn ...