爬虫学习(三)——get请求参数解析
get请求:
用户输入搜索的内容,发送请求,将请求的内容保存起来。
get请求的本质是在地址栏中输入参数进行的一种请求方式。
解析参数使用urllib.parse
import urllib.parse
# 在百度搜索“中国”关键字,得到的得到的url如下:
string= "https://www.baidu.com/s?ie=utf-8&word=%E4%B8%AD%E5%9B%BD&tn=98537121_hao_pg"
#unquote()反应用,解析参数,将二进制转成我们能看懂的中文形式
string = urllib.parse.unquote(string)
print(string)
# 显示结果:
https://www.baidu.com/s?ie=utf-8&word=中国&tn=98537121_hao_pg
第一种方式
country =input("请输入要检索的信息")
# 输入内容:王家兴
# 引用,即解析参数,将中文转换成为二进制形式
# 对指定的参数径解析
string = urllib.parse.quote(country)
# 将参数写成字典的格式
data = {
"ie":"utf-8",
"word":"%s"%string
}
# 拼接路由
lt = []
for ie,word in data.items():
lt.append(ie+"="+word)
# join()函数的作用是将将“&”作为分隔符对列表lt中的字符串进行拼接
var ="&".join(lt)
string= "https://www.baidu.com/s?%s"%var
print(string)
# 显示结果:
# https://www.baidu.com/s?ie=utf-8&word=%E7%8E%8B%E5%AE%B6%E5%85%B4
第二种方式
# 将参数写成字典的格式
data = {
"ie":"utf-8",
"word":"澳大利亚"
}
# urlencode()函数是专门对url进行操作的函数,并且把参数编码成为url类型的数据
urldata = urllib.parse.urlencode(data)
print(urldata)
# 显示结果:
# ie=utf-8&word=%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A
# 对url进行拼接
urlall= "https://www.baidu.com/s?%s"%urldata
# 显示结果:
print(urlall)
# https://www.baidu.com/s?ie=utf-8&word=%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A
ajax的GET请求
请求头信息(浏览器请求头信息)
- Request URL:https://movie.douban.com/top250?start=25&filter=
- Request Method:GET
- Status Code:200 OK
- Remote Address:154.8.131.165:443
- Referrer Policy:unsafe-url
爬虫代码如下:
import urllib.request
import urllib.parse
url = "https://movie.douban.com/top250?"
start = int(input("输入要查看到电影的页码:"))
data = {
"start": (start - 1) * 25,
"filter": "",
}
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}
data = urllib.parse.urlencode(data)
url+=data
print(url)
request =urllib.request.Request(url,headers = headers)
response = urllib.request.urlopen(request)
print(response.read().decode("utf8"))
爬虫学习(三)——get请求参数解析的更多相关文章
- SpringBoot系列教程web篇之Get请求参数解析姿势汇总
一般在开发web应用的时候,如果提供http接口,最常见的http请求方式为GET/POST,我们知道这两种请求方式的一个显著区别是GET请求的参数在url中,而post请求可以不在url中:那么一个 ...
- SpringBoot系列教程web篇之Post请求参数解析姿势汇总
作为一个常年提供各种Http接口的后端而言,如何获取请求参数可以说是一项基本技能了,本篇为<190824-SpringBoot系列教程web篇之Get请求参数解析姿势汇总>之后的第二篇,对 ...
- SpringMVC请求参数解析
请求参数解析 客户端请求在handlerMapping中找到对应handler后,将会继续执行DispatchServlet的doPatch()方法. 首先是找到handler对应的适配器. Hand ...
- Python3爬虫(三)请求库的使用之urllib
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.urllib库: 1. 是Python内置的HTTP请求库 2. 在Python2中,由urllib和urll ...
- http.request请求及在node中post请求参数解析
Post请求 var http=require('http'); var qs=require('querystring'); var post_data={a:123,time:new Date() ...
- springmvc 请求参数解析细节
springmvc 的请求流程,相信大家已经很熟悉了,不熟悉的同学可以参考下资料! 有了整体流程的概念,是否对其中的实现细节就很清楚呢?我觉得不一定,比如:单是参数解析这块,就是个大学问呢? 首先,我 ...
- Java爬虫系列三:使用Jsoup解析HTML
在上一篇随笔<Java爬虫系列二:使用HttpClient抓取页面HTML>中介绍了怎么使用HttpClient进行爬虫的第一步--抓取页面html,今天接着来看下爬虫的第二步--解析抓取 ...
- Python爬虫学习三------requests+BeautifulSoup爬取简单网页
第一次第一次用MarkDown来写博客,先试试效果吧! 昨天2018俄罗斯世界杯拉开了大幕,作为一个伪球迷,当然也得为世界杯做出一点贡献啦. 于是今天就编写了一个爬虫程序将腾讯新闻下世界杯专题的相关新 ...
- python爬虫学习(三):使用re库爬取"淘宝商品",并把结果写进txt文件
第二个例子是使用requests库+re库爬取淘宝搜索商品页面的商品信息 (1)分析网页源码 打开淘宝,输入关键字“python”,然后搜索,显示如下搜索结果 从url连接中可以得到搜索商品的关键字是 ...
随机推荐
- AngularJs1.X学习--路由
[三种使用说明:] $stateProvider.state('station.printQRCode', { //params: { 'parentOfficeId': null }, //一次性参 ...
- Django的用户认证组件,自定义分页
一.用户认证组件 1.auth模块 from django.conrtrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1)authen ...
- ReflectionUtil
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- 030 Substring with Concatenation of All Words 与所有单词相关联的字串
给定一个字符串 s 和一些长度相同的单词 words,找出 s 与 words 中所有单词(words 每个单词只出现一次)串联一起(words中组成串联串的单词的顺序随意)的字符串匹配的所有起始索引 ...
- CodeForces - 589B
题目链接:https://vjudge.net/contest/242578#problem/B Dasha decided to bake a big and tasty layer cake. I ...
- how to keep impact-crusher in good condition
how to keep impact-crusher in good condition Why we have to maintenance impact crusher? As we talked ...
- Maven配置默认JDK/JRE版本
1. settings.xml的profiles标签下配置 <profile> <id>jdk-1.8</id> <activation> <ac ...
- JAVA 多线程 Callable 与 FutureTask:有返回值的多线程
java多线程中,如果需要有返回值,就需要实现Callable接口. 看例子: 先建立一个Dowork这个类,就是平时某个业务的实现 package com.ming.thread.one; impo ...
- 开源的SSH框架优缺点分析
开源是3个框架共有的优点 Struts2框架(MVC框架)的优点如下: 1) 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现: 2) 丰富的标签库,大大提高了开发的效率: 3) Str ...
- Cucumber 步骤中传Data Table作为参数
引用链接:http://cukes.info/step-definitions.html Data Tables Data Tables are handy for specifying a larg ...