scrapy学习案例_百度翻译
此案例使用scrapy post请求
创建scrapy项目
scrapy startproject fanyi_post
2. 创建爬虫文件(../fanyi_post/fanyi_post/spiders
)
scrapy genspider fanyi https://fanyi.baidu.com/sug
爬取思路
- post请求与start_urls和parse没有任何关系
- 使用start_requests函数来写post请求
def start_requests(self):
word = input('input:')
url = "https://fanyi.baidu.com/sug"
data = {
'kw': word
}
- 使用scrapy.FormRequest类发送post请求
yield scrapy.FormRequest(url=url, formdata=data, callback=self.parse_second)
这段代码是使用Scrapy框架中的
FormRequest
类来发送POST请求,其中包括了要提交的表单数据data
和目标URLurl
。一般来说,这段代码用于模拟用户在网页上填写表单并提交的行为。一旦服务器响应了这个请求,它会调用parse_second
方法来处理响应并提取数据。
- 解析并打印
def parse_second(self, response):
content = response.text
obj = json.loads(content)
for i in obj['data']:
print(i['v'])
3. 运行文件
scrapy crawl fanyi
代码
../fanyi_post/fanyi_post/spiders/fanyi.py
import scrapy
import json
class FanyiSpider(scrapy.Spider):
name = "fanyi"
allowed_domains = ["fanyi.baidu.com"]
# start_urls = ["https://fanyi.baidu.com/sug"]
def start_requests(self):
word = input('input:')
url = "https://fanyi.baidu.com/sug"
data = {
'kw': word
}
yield scrapy.FormRequest(url=url, formdata=data, callback=self.parse_second)
def parse_second(self, response):
content = response.text
obj = json.loads(content)
for i in obj['data']:
print(i['v'])