爬虫scrapy框架(7)——post请求
2019-06-01 本文已影响0人
猛犸象和剑齿虎
![](https://img.haomeiwen.com/i1920664/e6ab07ac726900dc.jpg)
- scrapy默认的是get请求。这次我们尝试用post请求。
我们还是以有道词典在线翻译网站为例:http://fanyi.youdao.com/?keyfrom=fanyi.logo
通过翻译获取真实网址url为:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
实际运用中需要将_o去掉。
- 首先我们创建一个项目,新建一个文件夹,按住shift,鼠标右键在此处打开命令窗口,输入scrapy startproject youdaosipder。
-
创建完成后,输入scrapy genspider ydspider youdao.com 如果没有出现相应爬虫文件,在这样的文件夹内再次打开命令窗口输入刚才的命令。
image.png
ydspider.py
# -*- coding: utf-8 -*-
import scrapy
#http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
class YdspiderSpider(scrapy.Spider):
name = 'ydspider'
allowed_domains = ['fanyi.youdao.com']
# start_urls = ['http://youdao.com/']
def start_requests(self):
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
#向队列中加入post请求
yield scrapy.FormRequest(
url=url,
formdata={
'i':'男人',
'from':'AUTO',
'to':'AUTO',
'smartresult':'dict',
'client':'fanyideskweb',
'salt':'15589655028559',
'sign':'6781389ab298673f7036bce9cd99815b',
'ts':'1558965502855',
'bv':'ab57a166e6a56368c9f95952de6192b5',
'doctype':'json',
'version':'2.1',
'keyfrom':'fanyi.web',
'action':'FY_BY_REALTlME'
},
callback=self.parse
)
def parse(self, response):
print('-----------------------------------------------------------')
print(response.body)
在settings.py中关掉(注释掉)机器人协议。机器人协议是网站的一些声明,允许用户什么行为,不允许什么行为,建议大家了解一下。
![](https://img.haomeiwen.com/i1920664/80442534094190c6.png)
在黑屏终端中输入scrapy crawl ydspider
![](https://img.haomeiwen.com/i1920664/226a8b45845364a1.png)
翻译结果为 A man