url

豆瓣高分电影500部的信息爬取

試著忘記壹切 提交于 2020-02-08 23:48:31
第一步:明确需求 1. 分析数据来源的规律 2. 获取豆瓣高分电影的具体信息的访问链接 3. 利用具体信息的url 获取所有信息 4. 将2和3两张数据表连接成一张表格,并保存在Excel中 第二步:分析数据存储路径 豆瓣高分电影存储位置: 源访问链接: url = ' https://movie.douban.com/ explore#! type=movie&tag=%E8%B1%86%E7%93%A3%E9%AB%98%E5%88%86&sort=recommend&page_limit=20&page_start=0 ' 通过此链接寻找到数据加载链接: url = 'https://movie.douban.com /j/search_subjects? type=movie&tag=%E8%B1%86%E7%93%A3%E9%AB%98%E5%88%86&sort=recommend&page_limit=20&page_start=0' 发现通过改变page_limit=xxxx可以获取更多信息,当page_limit=500时电影数量不在增加。 因此可以通过这个url获取所有高分电影的电影名和访问链接: 1 # 访问链接 2 url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E8%B1

axios中qs的使用

若如初见. 提交于 2020-02-08 22:49:44
首先qs是一个npm仓库所管理的包,可通过npm install qs命令进行安装. 地址: https://www.npmjs.com/package/qs qs.parse() 、 qs.stringify() qs.parse() 将URL解析成对象的形式 const qs = require('qs'); let url = 'method=query_sql_dataset_data&projectId=85&appToken=7d22e38e-5717-11e7-907b-a6006ad3dba0'; qs.parse(url); console.log(qs.parse(url)); qs.stringify() 将对象 序列化成URL的形式,以&进行拼接 const qs = require('qs'); let obj= { method: "query_sql_dataset_data", projectId: "85", appToken: "7d22e38e-5717-11e7-907b-a6006ad3dba0", datasetId: " 12564701" }; qs.stringify(obj); console.log(qs.stringify(obj)); 那么当我们需要传递 数组 的时候,我们就可以通过下面方式进行处理: 默认情况下

微信网页授权关于state

て烟熏妆下的殇ゞ 提交于 2020-02-08 22:11:35
认识微信网页授权 微信网页授权(官方文档)是公众号开发者在微信内嵌浏览器中获取用户基本信息的唯一方式,其最关键的就是取得用户的 openid,进而才能实现支付一类的功能,因此微信这个 OAuth 的意义已经不仅仅在于授权登录了。 一个简单的微信授权的流程大致如下: 当然,在实际使用中,我们不会让用户每次都去授权,授权之后我们会把信息写入 session/cookie 中,于是一个比较标准的流程应该是: state 该如何用 在微信授权的参数里面,有一个不太起眼的非必须字段 state ,官方的说明是『重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节』,咋看一下,似乎只是一个标识字段,用来传递用户授权前的状态。 但实际上,我们可以在回调地址 redirect_uri 里传递任何参数,同样可以用来保持用户的状态,实现和 state 一样的效果,为什么还要单独设立一个 state 参数呢? 在我刚接触微信授权的时候,应业务需求做了一个微信授权的中转服务,我将 state 用来标识用户在授权后应该去到哪一个应用,比如用户需要去我们的商城 mall,那么就传 state=mall。这个设计看似高效合理,但是不知不觉间就已经引入了一个潜在的安全问题了: 如果授权第二步中微信 301 重定向的 url 被其他人截取了,我没有办法验证这个 url

网络编程(三)

拈花ヽ惹草 提交于 2020-02-08 19:06:56
HTTP HTTP协议 Content-Type指示响应的内容,浏览器依靠其判断响应的内容是网页还是图片。 HTTP使用URI来传输数据和建立连接。 URI是统一资源标识符,URL是统一资源定位符,URI分为URL和URN,统一资源名称。 URL 一个完整的URL包括以下几个部分 http://www.enjoyedu.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name 协议部分:该URL的协议部分是http: 域名部分:该URL的域名为:www.enjoyedu.com。一个URL中,也可以使用IP地址作为域名使用 。 端口部分:跟着域名后的是端口,如果省略,使用默认端口。 虚拟目录,第一个/开始到最后一个/为止。 文件名部分,从最后一个/到?为止。本域名为index.asp 锚部分:从#到最后,本域名为name 参数部分,从?到#之间的部分。 一次完整的http请求过程 进行DNS域名解析(先从本地浏览器缓存,操作系统缓存或DNS服务器中查找) 建立TCP连接,三次握手 客户端向服务器发送请求命令 如:GET/sample/hello.jsp HTTP/1.1 客户端发送请求头信息 发送请求命令后,还需要以头信息的形式向服务器发送一些别的信息。之后客户端发送了一行空白行来通知服务器,已经结束了该头信息的发送。 服务器应答

56-爬虫-ip代理的使用

拜拜、爱过 提交于 2020-02-08 19:00:17
为了防止频繁访问而导致的IP被服务器封掉的可能,可以使用Ip代理来实现。 使用方法,在requests的函数中加个proxies参数即可: page_text = requests.get(url=url, headers=headers, proxies={'http': '60.167.132.19:9999'} ) 可以使用的免费IP代理可以从如下网站获取: 1.快代理: https://www.kuaidaili.com/free/ 2.西刺代理: https://www.xicidaili.com/nn/ 网上还有其它的。 下面再给个抓取免费代理的代码,会将快代理网址的ip存入运行文件相同路径下的data文件夹中。 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/2/5 10:42 # @Author : ystraw # @Site : # @File : getIpPool.py # @Software: PyCharm Community Edition # @function: 从快代理获取可用的代理IP # https://www.kuaidaili.com/free/inha/2/ import requests import time import random from bs4

Python从零开始写爬虫-3 获取需要抓取的URLs

别说谁变了你拦得住时间么 提交于 2020-02-08 18:03:56
Python从零开始写爬虫-3 获取需要抓取的URLs   在一节中,我们学习了如果通过正则表达式来获取HTML里面指点便签的内容, 那么我今天就来看看实际的效果.在抓取小说之前, 我们需要知道小说有哪些章节,以及这些章节的顺序.   刚开始我是通过获取一个章节, 然后从这个章节获取下个章节的链接, 然后发现这个方法问题很大. 该方法只能单线程操作, 对于抓取小说来非常的满, 几乎没有爬虫是单线程, 单线程的效率是无法被接受的. 鲁棒性差, 只要有一个章节没有正确的抓取下来, 那么整个程序就无法进行. 这样的做的好处, 可以保证章节的连续性. 后来发现我发现可以直接通过目录来获取全部章节的目录.话不多说,开始我们今天的任务, 获取URLs 首先通过 第一节 学习到内容, 获取小说的目录页.这里以小说 吞噬星空 为例. import requests r = requests.get('http://www.biquger.com/biquge/12928/') r.encoding = 'utf-8' print(r.text) 观察url的格式 通过观察下载的html源码, 可以发现, 所有的URL都以: <dd><a href="http://www.biquger.com/biquge/12928/4282781" title="第一章 罗峰">第一章 罗峰</a></dd>

Python3.7实现自动刷博客访问量(只需要输入用户id)(转)

与世无争的帅哥 提交于 2020-02-08 17:48:06
新增了代理功能,代码很浅显易懂不想多余讲解 import re import requests from requests import RequestException import time import random from bs4 import BeautifulSoup # 获取网页的response文件 def get_response(url): try: headers = { 'Referer': 'https://blog.csdn.net', # 伪装成从CSDN博客搜索到的文章 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36' # 伪装成浏览器 } # 设置代理ip porxy_list = [ {"http": "http://218.60.8.99:3129"}, {"http": "http://114.226.244.78:9999"}, {"http": "http://39.137.95.71:80"}, {"http": "http://115.159.31.195:8080"}, {"http": "http://39.137.69

AJAX---基本的封装

北城以北 提交于 2020-02-08 15:45:29
基本的封装 函数就可以理解为一个想要做的事情,函数体中约定了这件事情做的过程,直到调用时才开始工作。 将函数作为参数传递就像是将一个事情交给别人,这就是委托的概念 封装: 1. 写一个相对比较完善的用例 2. 写一个空函数,没有形参,将刚刚的用例直接作为函数的函数体 3. 根据使用过程中的需求抽象参数 AJAX 请求封装 /** * 发送一个 AJAX 请求 * @param {String} method 请求方法 * @param {String} url 请求地址 * @param {Object} params 请求参数 * @param {Function} done 请求完成过后需要做的事情(委托/回调) */ <script> // 封装者============================= function ajax(method, url, params, done) { method = method.toUpperCase() var xhr = new XMLHttpRequest() if (typeof params === 'object') { var tempArr = [] for (var key in params) { var value = params[key] tempArr.push(key + '=' + value) }

AJAX---jQuery 中的 AJAX

…衆ロ難τιáo~ 提交于 2020-02-08 15:37:19
jQuery 中的 AJAX jQuery 中有一套专门针对 AJAX 的封装,功能十分完善,经常使用,需要着重注意 参考: http://www.jquery123.com/category/ajax/ http://www.w3school.com.cn/jquery/jquery_ref_ajax.asp $.ajax 常用选项参数介绍: url:请求地址 type:请求方法,默认为 get dataType:服务端响应数据类型 contentType:请求体内容类型,默认 application/x-www-form-urlencoded data:需要传递到服务端的数据,如果 GET 则通过 URL 传递,如果 POST 则通过请求体传递 timeout:请求超时时间 beforeSend:请求发起之前触发 success:请求成功之后触发(响应状态码 200) error:请求失败触发 complete:请求完成触发(不管成功与否) // 最基础的 调用 $.ajax('./time.php', { type: 'post', // method 请求方法 success: function (res) { // res => 拿到的只是响应体 console.log(res) } }) $.ajax({ url: 'time.php', type: 'post', /