python——爬虫——带参爬取

知乎搜索爬虫

https://www.zhihu.com/search?type=content&q=爬虫

百度搜索python

https://www.baidu.com/s?wd=python&rsv_spt=1&rsv_iqid=0xfa23c74400149f2c&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=7&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0&inputT=716&rsv_sug4=1516

由上可知,每个url都是由两部分组成:[https://xxx.xxx.xx/xx/xx] 和 [xx=xx&xx=x]
中间用 ‘?’ 连接

前半部分是我们要访问的网页地址,后半部分就是请求的参数
参数的结构:
参数的结构和字典很像,有键有值,键=值;每组键值字间用&来连接

带参访问:url+str()
例如:url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start='+str(i*20)
你可以改变后面i的值再访问链接

https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=20

传递url参数,通常一个字符串会跟在url后面中间以?分开
这样看上去比较繁琐啰嗦,不够简洁,resquests模块里面requests.get()中有一个参数parms,它可以让我们用字典的形式,把参数传进去,

例如:

url_test=httpbin.org/get?key=va1
payload={"key1":"value1","key3"=["value3","value4"]}
res=requests.get(url_test,parms=payload)
print(res.url)	#http://httpbin.org/get?key1=value1&key3=value3&key3=value4

其实我们打开每一个请求,都会有一个Requests Headers,一般我们称之为“请求头”。它里面会有一些关于该请求的基本信息,例如它会记录发出请求的设备和浏览器。图中的user-agent(既用户代理)记录的就是我的电脑系统信息(win10系统)和浏览器(谷歌浏览器)。
origin和referer则是记录了这个请求的最初来源是哪个页面。相比之下referer会比origin更长,这意味着referer会携带更多的信息。
在这里插入图片描述

谷歌爬虫的user-agent是Googlebot;
而百度的是Baiduspider。

如何封装requests headers:
与封装params非常类似,我们只需要将origin或referer一并作为字典写入headers就好

例如:

headers = {
 	'origin':'https://y.qq.com',

    # 请求来源

    'referer':'https://y.qq.com/n/yqq/song/004Z8Ihr0JIu5s.html',

    # 请求来源

    'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',

    # 标记了请求从什么设备,什么浏览器上发出

    }

如果你的循环次数非常多,服务器很可能拒绝爬虫访问。因为即使是可以爬的网站,过于频繁的访问也可能被判定为对网站的攻击。这种情况下你最好将自己的爬虫伪装成真实的浏览器(也就是在请求时填写请求头)。对于不允许爬虫访问的网站如知乎、猫眼电影等更应该如此。

知乎爬虫

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值