精华内容
下载资源
问答
  • requests 模块

    2019-07-22 09:43:00
    爬虫 概念:编写程序模拟浏览器上网,...robots 协议:“君子不防小人” User-Agent:请求载体的身份标识 requests 模块 requests 模块代码编写的流程 指定 URL 发起请求 获取响应对象中的数据 持久化存储 impo...

    爬虫

    概念:编写程序模拟浏览器上网,让其去互联网上获取数据的过程

    • 通用爬虫:一整张页面
    • 聚焦爬虫:页面中局部的内容

    反爬机制:对应的载体是门户网站

    反反爬策略:对应的载体是爬虫程序

    robots 协议:“防君子不防小人”

    User-Agent:请求载体的身份标识

    requests 模块

    requests 模块代码编写的流程

    • 指定 URL
    • 发起请求
    • 获取响应对象中的数据
    • 持久化存储
    import requests
    
    # 指定URL
    url = 'https://www.sogou.com/'
    
    # 发起请求
    response = requests.get(url=url)
    
    # 获取响应对象中的数据
    page_text = response.text       # response.text是字符串
    
    # 持久化存储
    with open('./sougou.html', 'w', encoding='utf-8') as fp:
        fp.write(page_text)

    需求:爬取搜狗指定词条搜索后的页面数据

    1330952-20190722093531916-183410926.png

    需求:爬取百度翻译结果(百度翻译是一个局部的页面刷新,因此发起的是一个基于 ajax 的异步请求)

    1330952-20190722093644190-2053425656.png

    response.text :返回字符串格式

    response.content :返回二进制格式

    response.json() :返回 json 格式(要保证返回是 json 数据才能调用该方法)

    爬取豆瓣电影分类排行榜(https://movie.douban.com/)中电影的详情数据

    豆瓣电影在鼠标滚轮下滑时会自动刷新更多的电影,也是局部页面的 ajax 请求

    1330952-20190722093712016-221567890.png

    爬取肯德基餐厅查询(http://www.kfc.com.cn/kfccda/index.aspx)中指定地点的餐厅数据

    1330952-20190722093726014-315361453.png

    爬取国家药品监督管理总局中基于中国化妆品生产许可证相关数据(http://125.35.6.84:81/xk/

    每家公司都是一个跳转页面,因此要拿到这些跳转的 a 标签,因为要获取的是点击 a 标签中的详细信息。点击翻页时 URL 并没有变化,因此是 ajax 请求,但是在获取到响应对象的数据时,数据中并没有 a 标签。但是这些数据中有 ID

    1330952-20190722093744457-1820891636.png

    当点进这些 a 标签进入详情页时,该页的 URL 也并不能获取到详细信息,因此这些详细信息是动态加载出来的,目前所掌握的动态加载只有 ajax,在 Response 中就是该企业的详情信息,发现该 URL 携带的参数是一个 ID,也就是上面所获取的 ID,可以使用循环获取每一个 ID

    1330952-20190722093804058-474134788.png

    '''
    循环产生字典作为请求的参数,使用 requests 发的是 post 请求
    会用到第三个参数 headers,这个参数涉及到 User-Agent,它是请求载体的身份标识
    也就是说使用浏览器发请求和使用 requests 发请求,对应的请求载体不同,即身份标识不同
    大部分的网站都会检测对应请求的身份标识,正常用户访问都会通过浏览器发起请求
    这里使用的是爬虫程序,它发的载体就不是基于某一款浏览器
    如果使用 requests 发请求,服务器端是可以检测对应请求的身份标识,可能就拿不到想要的数据
    
    反爬机制:UA(User-Agent)检测 ---->  UA 伪装
    
    可以对当前使用 requests 发的请求载体进行伪装成基于某一浏览器的
    
    这里的 headers 就是请求头信息
    '''
    import requests
    
    url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
    }
    id_list = []
    
    for page in range(1, 11):
        data = {
            "on": "true",
            "page": str(page),
            "pageSize": "15",
            "productName": "",
            "conditionType": "1",
            "applyname": "",
            "applysn": "",
        }
        json_data = requests.post(url=url, data=data, headers=headers).json()
        for dic in json_data['list']:
            id = dic['ID']
            id_list.append(id)
    
    detail_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
    for id in id_list:
        detail_data = {
            "id": id
        }
        detail_json = requests.post(url=detail_url, data=detail_data, headers=headers).json()
        print(detail_json)
    

    图片爬取

    1330952-20190722093838910-411862499.png

    转载于:https://www.cnblogs.com/qiuxirufeng/p/11224032.html

    展开全文
  • requests库的简单用法简单介绍基础用法请求数据发送请求输出响应 简单介绍 requests是一个用于发送http/https请求的库,但一切核心是来自于urllib3库,相对于其他发送网络请求包的库,我感觉这个使用更加简单明了。 ...

    作者:小刚
    一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢
    本实验仅用于信息防御教学,切勿用于其它用途

    简单介绍

    requests是一个用于发送http/https请求的库,但一切核心是来自于urllib3库,相对于其他发送网络请求包的库,我感觉这个使用更加简单明了。
    这次主要记录一下requests的最基础的使用方法。
    中文手册网址:https://requests.readthedocs.io/zh_CN/latest/

    基础用法

    import requests #导入库
    url = 'https://www.baidu.com' #要请求的网址
    payload = {} #请求的数据
    headers = {
    	'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
    } #请求头信息 
    
    response = requests.get(url,headers=headers,data=payload) # 发送请求包,返回内容存入response
    
    print(response.text) #打印响应包内容 
    

    我用我的思维大体估摸了一下这串代码,总共可以分为三个部分
    设置请求数据发送请求包输出响应内容

    请求数据

    url = 'https://www.baidu,com' #请求的网址记得别忘了https://
    params = {'id'='123',uid='456'}请求参数设置,主要是GET请求参数
    payload = {'username'='xg','passwd'='123456'} 要发送的数据内容,POST数据内容
    headers = {'User-Agent'='xxxxxxxxxx', 'Cookie'='xxxxxxxxxxx', 'X-Forwarded-For'='127.0.0.1'}设置请求头信息
    proxies = { "http":"http://127.0.0.1:8080", "https":"https://127.0.0.0:8081" }设置代理地址,跑burp时候能用上

    发送请求

    两种发送请求方式
    resopnse = requests.get(url,headers=headers)
    response = requests.request('GET',url,headers=headers)
    这两种发送请求方式一样,支持GET,POST,PUT,DELETE,HEAD 以及 OPTIONS 的请求方法。

    再次要介绍的是括号里面的请求参数设置

    'GET'就是要设置的请求方式
    url请求的网站url
    headers=xxx设置请求头
    params=xxx接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
    data=xxx设置请求数据,post的数据
    allow_redirects=False禁用重定向处理
    timeout=0.001设置响应时间,以免超时浪费时间
    proxies = xxxx设置代理地址
    verify=True检查某个主机的ssl证书

    输出响应

    print(response.text)查看响应内容,unicode格式
    print(response.text.encode('utf8'))
    print(response.content)查看响应内容,返回的字节流数据(好像是二进制代码)
    print(response.url) 返回请求后完整的url地址
    print(response.encoding)查看响应头部字符编码
    print(response.status_code)查看返回的响应码
    print(response.json())显示json文件
    response.history追踪重定向的过程
    cookiejar = response.coookies 获取返回的cookie值
    cookiedict = requests.utils.dict_from_cookiejar(cookiejar)转化cookie为字典类型

    展开全文
  • import requests import os import re #获取网页信息 def url_open(url): #添加头部信息记得加上 Referer,不然图片地址会变成防盗链接 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) Apple...
    import requests
    import os
    import re
    
    #获取网页信息
    def url_open(url):
      #添加头部信息记得加上 Referer,不然图片地址会变成防盗链接
      headers = {'User-Agent':
                 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'
                 ,"Referer":"http://www.mzitu.com/"}
        
      response = requests.get(url, headers=headers)
      return response
    
    #得到所有网址套图的地址
    def get_page(url):
      phtml = url_open(url).text
      #print(phtml)
    #正则匹配套图地址
      page_p = r'<a href="([^"]+\d+)" target="_blank">'
      page_addrs = []
      #for 循环去除正则匹配的重复图片套图地址有
      for i in re.findall(page_p,phtml):
        if i in page_addrs:
          continue
        else:
          page_addrs.append(i)
      return page_addrs
      #print(page_addrs)
     
    #把每个网页套图里的所有图片下载保存到文件夹中
    def get_img(url):
      os.mkdir("MeiZiTu")
      os.chdir("MeiZiTu")
      
      page_addrs = get_page(url)
      print(page_addrs)
      for  page_url in page_addrs:
        print(page_url)
        img_html1 = url_open(page_url).text
        #print(ihtml)
        #正则匹配套图页数
        p = r'<span>(\d+)</span>'
        p_url = re.findall(p,img_html1)
        #print(p_u)
        #取套图的最大页数
        x = int(p_url[-1])
        #print(x)
        
        for i in range(1,x+1):
          img_url = page_url + "/" + str(i)
          #print(img_url)
          img_html2 = url_open(img_url).text
          #print(img_html2)
          #匹配图片地址
          img_p = r'<img src="([^"]+\.jpg)"'
          img_addrs =  re.findall(img_p,img_html2)
          
          for each in img_addrs:
            #print(each)
            file = each.split("/")[-1]
            with open(file, "wb") as f:
              img = url_open(each).content
              f.write(img)
          
    
    if __name__ == "__main__":
      url = 'http://www.mzitu.com/'
      get_img(url)


    结果


    展开全文
  • python3模拟登陆人人网(requests

    千次阅读 2018-11-05 21:00:56
    requests date = { 'email' : '187******' , 'password' : '*******' #填写个人的账号密码 } url2 = 'http://www.renren.com/PLogin.do' req = requests . post ( url2 , data = date ) html = req . ...

    前言

    • 之前看别人一直模拟登陆人人网,我就想人人网有头有脸的咋那么好模拟登陆进去呢,,今天看了下发现真的超级容易登陆,可能人人太老了也好久不更新了吧。人人网一点防护措施都没有,没有验证码,没有加密,没有乱起八糟的东西。☺

    过程

    • 首先,分析一下模拟登陆到底是什么,有的人可能会很迷惑,我知道爬虫有get请求啊,有post请求啊,这模拟登陆啥玩意啊,还要输入东西乱起八糟的。可能觉得很蒙蔽,但是我们反观一个post请求:若干参数的的表单请求。而模拟登陆就是一种post请求,但是通常可能会加上一些隐藏的id。或者加密一些参数。那样处理起来可能比较复杂,要仔细的分析表单内容甚至读通js的加密规则(有的大网js都是乱的还得自己去第三方调格式)。设计的验证码部分也是比较麻烦(我这菜鸡就先不介绍了)。
    • 废话不说,下面看人人网的主页登陆界面的表单吧。
      在这里插入图片描述
      python代码如下:
    import requests
    date={
     'email':'187******',
     'password':'*******'#填写个人的账号密码
    }
    url2='http://www.renren.com/PLogin.do'
    req=requests.post(url2,data=date)
    html=req.text
    print(html)
    

    输出结果部分:
    在这里插入图片描述
    在这里插入图片描述
    非本人原本申请账号,我不是妹子,各位别激动(?)

    如果对后端、爬虫、数据结构算法等感性趣欢迎关注我的个人公众号交流:bigsai

    展开全文
  • 页面响应时间过长,影响后面的程序运行,可以给程序限制时间: 为爬虫限制,可以设置headers 在我个人的应用场景中,各大网站要不随便我访问,要不封锁我的IP,并不看user-agent 为网站注明的编码方式和实际...
  • 将timeout作为参数项,若响应超过设置的时间后即停止等待响应,以某些请求没有响应而一直处于等待状态; 1)先获取响应时间 获取响应时间 res.elapsed.total_seconds() 案例: import requests base_url = '...
  • The website is the API… Requests文档:...import requests #定义通用爬虫代码框架 def getHTMLText(url): try: # 设置代理服务器,隐藏IP地址,预防爬虫反追踪 pxs = {'...
  • Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36', } response = requests.Session().get(vst_url.format(st), headers=headers) 正常的话到这里就是登录成功...
  • 大家一般都使用python的requests库进行爬虫开发,在很多情况下,我们代码写好了,运行起来总是得不到想要的结果,要么是headers字典里面少加了点特定的键值,要么是忘了带cookie,还有就干脆发送的数据body或者query...
  • Python爬虫—requests模块的基本使用 基础 什么是爬虫? 就是通过编写程序模拟浏览器上网,然后让其去互联网上爬取数据的过程。 爬虫的分类 通用爬虫 抓取互联网中的一整张页面数据 聚焦爬虫 抓取页面中的...
  • requests、BeautifulSoup、re批量爬取MM131图片,并保存到本地 ** 图片有防盗链怎么办? 可以用Rerferer(这里的R必须是大写) Rerferer是浏览该网站之前所在网站,所以在请求头中加上Rerferer就可以绕过图片防盗` '...
  • 前段时间喜欢用python去抓一些页面玩,但都基本上都是用get请求一些页面,再通过正则去过滤。 ...发现也比较简单。... ... 网站分析 爬虫的必备第一步,分析目标网站。这里使用谷歌浏览器的开发者者工具分析。...
  • 一个用于爬取采用JS脚本爬虫漫画网站的脚本 具体看注释 # coding=utf-8 import pdfkit import requests from urllib.request import urlretrieve from bs4 import BeautifulSoup import os,time,threading from ...
  • 这几天想看龙族最新版本,但是搜索半天发现 没有网站提供 下载, 我又只想下载后离线阅读(写代码已经很费眼睛了)。无奈只有自己 爬取了。...如果 爬取不到了,说明,此网站做了爬虫,或者 其渲染 网页的 ht...
  • requests基础使用讲解后,开始自动化框架的搭建。 首先分析需求,从比较复杂的post来当作实例在分析: request.post(url,data,headers) 正常一个post请求需要url,body和headers。 url一般由基础url地址和api...
  • 工藤新一国中踢足球图片疾飞今日有什么足球比赛直播土表足球相关简笔画大全废话足球运动员肌肉不明显量释country road 天下足球 贝克汉姆防御描写踢足球动作的段落(200字)围时足球小将2002天使之翼国语版全集蛮力...
  • 溯源连接WebShell

    2021-03-04 09:44:04
    前言 原理就是通过腾讯云的云函数将我们的请求进行转发,目标那里获取到的IP即腾讯云的IP,并且有CDN。 实战 ...第一次使用云函数的时候可能需要授权。... 这里直接默认就好,也可以设置一下函数名称...import requests impor
  • php编写的通waf

    2020-06-12 15:27:52
    all_requests.txt记录的类似于apache的日志,但是它能显示出每次访问POST过来的数据 详细日志 all_requests_details.txt记录的是详细的请求头信息,类似burp中截取的请求。 攻击流量 attack_detect_log.txt记录的...
  • 1. 什么是 SSRF 攻击⚔ SSRF 全称 Server-side Request Forgery,即服务器端请求伪造。 其原理就是利用服务器端的某些漏洞,在客户端访问到服务器内部或者...import requests from flask import Flask, request app
  • 转载自: http://mogu.io/prevent-duplicate-requests-4   重复请求处理的实践与总结 作者:木照   时间:May 30, 2014   分类:默认分类 #重复处理总结##背景在业务开发中,我们常会面对防止...
  • 这个问题由来已久啊,从前后端交互开始就碰到这个问题,当然这个原因是因为Spring Security在默认情况下开启了CSRF(跨站点请求伪造) 解决: 1. 关闭CSRF http.csrf().disable().authorizeRequests(); 关闭...
  • Tkinter 小窗口监控数据 被老板抓 最近买了一只股票,总是忍不住打开手机查看一下收益,甚至时常盯着手机,严重影响工作效率,于是乎想着写个爬虫,然后做一个极小界面展示数据,不被老板抓。以下是技术研究的心路...
  • 蘑菇街的一个方案,下面的文章转自蘑菇街的技术...#重复处理总结##背景在业务开发中,我们常会面对防止重复请求的问题。当服务端对于请求的响应涉及数据的修改,或状态的变更时,可能会造成极大的危害。重复请求的...
  • Python 撞库与防御策略

    千次阅读 2018-08-20 12:42:19
    import requests as req import time import re #获取文件 def getdic(file): dic = open(file).read() diclist = dic.split(&quot;\n&quot;) return diclist def writeFile(filename,text):...
  • ...spanel=2&from=o2o ...# encoding=utf-8 import requests import datetime,time import json import hashlib def jiami_md5(data): return hashlib.md5(data.encode(encoding='UTF-8')).hexdig..
  • Python modules:requests、json、random、timeBackground:在使用Python爬虫爬取网页数据时,我们会遭到网站自身的反爬虫防御,这时候我们需要采取一些方法来攻破网站的反爬虫防御策略。解决方法:接下来,将使用...
  • 发现使用requests返回页面时只需加上User-agent即可 但一段时间后会无法返回有效数据 尝试使用代理解决,但依旧不行(可能说明ip没有被封) 尝试更换User-agent,并轮流多个不同的User-agent ,成功绕过 ...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 156
精华内容 62
关键字:

防requests