爬虫中GET方法应用基本模型
根据get方法,更改界面url从而获取信息
GET请求URL附带查询参数
POST请求保存在form表单中
分析百度贴吧url特点:

分析url https://tieba.baidu.com/f是贴吧总的url,?后是get请求,kw=xxx,&后是页码信息
爬取百度贴吧对应内容信息:
#python3
import urllib
import urllib.request
import urllib.response
import urllib.parse def tieBarSpider(url,beginPage,endPage):
"""
作用:负责处理url,分配每个url去发送请求
url:需要处理的url
beginPage:爬虫执行的起始页面
endpage:爬虫执行的截止页面
:return:
"""
for page in range(beginPage,endPage):
pn = (page-1)*50 fileName = "第" + str(page) + "页"
fullUrl = url + "&pn=" + str(pn)
#print(fullUrl)
html = loadHtmls(fullUrl)
#将爬到的html页面保存到本地
writeFiles(html,fileName)
print("aleady:%s"%fileName) def loadHtmls(fullUrl):
"""
作用:根据url发送请求,获取服务器响应
fullUrl:完整的每页的url
:return:
"""
#添加User-Agent头,伪装成浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} request = urllib.request.Request(fullUrl,headers=headers) reponse = urllib.request.urlopen(request) return reponse.read().decode() #选择将爬取到的页面保存到本地
def writeFiles(html,filename):
"""
功能:将爬取到的页面保存到本地
html:页面html源码
filename:保存到本地的名字
:return:
"""
#下面语句相当于
# f = open(filename,'w')
# f.write(html)
# f.close()
with open(filename,'w') as f:
f.write(html) print('-'*20) if __name__ == '__main__': #初始页url构建
url = "https://tieba.baidu.com/f?"
keyword = input("请输入要爬取的贴吧内容:")
beginPage = int(input("BeginPage:"))
endPage = int(input("EndPage:"))
#转码为url编码,urlencode()接受的是一个字典
kw = urllib.parse.urlencode({"kw":keyword})
fullUrl = url + kw tieBarSpider(fullUrl,beginPage,endPage+1)
爬虫中GET方法应用基本模型的更多相关文章
- thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)
thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处 ...
- 09 Scrapy框架在爬虫中的使用
一.简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.它集成高性能异步下载,队列,分布式,解析,持久化等. Scrapy 是基于twisted框架开发而来,twisted是一个 ...
- thinkphp中where方法
今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置.where方法的用法是ThinkPHP查询语言的精髓,也是Think ...
- thinkphp中page方法
page方法也是模型的连贯操作方法之一,是完全为分页查询而诞生的一个人性化操作方法. 用法 我们在前面已经了解了关于limit方法用于分页查询的情况,而page方法则是更人性化的进行分页查询的方法,例 ...
- CI中的控制器中要用model中的方法,是统一写在构造器方法中,还是在每一个方法中分别写
Q: CI中的控制器中要用model中的方法,是统一写在构造器方法中,还是在每一个方法中分别写 A: 建议统一写,CI框架会自动识别已经加载过的类,所以不用担心重复加载的问题 class C_User ...
- 008.Adding a model to an ASP.NET Core MVC app --【在 asp.net core mvc 中添加一个model (模型)】
Adding a model to an ASP.NET Core MVC app在 asp.net core mvc 中添加一个model (模型)2017-3-30 8 分钟阅读时长 本文内容1. ...
- Class实例在堆中还是方法区中?
1.JVM中OOP-KLASS模型 在JVM中,使用了OOP-KLASS模型来表示java对象,即:1.jvm在加载class时,创建instanceKlass,表示其元数据,包括常量池.字段.方法等 ...
- Python爬虫防封杀方法集合
Python爬虫防封杀方法集合 mrlevo520 2016.09.01 14:20* 阅读 2263喜欢 38 Python 2.7 IDE Pycharm 5.0.3 前言 ...
- ThinkPHP中create()方法自动验证表单信息
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 原理: create()方法收集表单($_POST)信息并返回,同时触发表单自动验证 ...
随机推荐
- PL/SQL Developer工具
安装好Oracle以后我们发现在控制台来操作数据库很繁琐,而且也不方便阅读.所以,我们就要用到PL/SQL Developer工具,以达到能更好的操作数据库的目的. PL/SQL Developer简 ...
- 一个阿里云apache服务器配置两个或多个域名forLinux
一个阿里云apache服务器配置两个或多个域名for Linux: 默认已经配置好了阿里云提供的一键web安装,可以参考:http://www.42iot.com/?id=8 修改/alidata/s ...
- spring,get请求中带date日期格式参数,后台无法转换的问题
今天遇到个很奇怪的问题.前端 的查询条件中带有日期范围日期的格式 是 yyyy-MM-dd HH:mm 结果后台报错 org.springframework.validation.BindExcept ...
- python编程基础之简单购物车
#good文件夹内容[ ['Iphone7', 5800], ['Coffee', 30], ['疙瘩汤', 10], ['Python Book', 99], ['Bike', 199], ['Vi ...
- Linux性能优化从入门到实战:04 CPU篇:CPU使用率
CPU使用率是单位时间内CPU使用情况的统计,以百分比方式展示. $ top top - 11:46:45 up 7 days, 11:52, 1 user, load average: 0.00 ...
- 02scikit-learn模型训练
模型训练 In [6]: import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Lin ...
- oralce 汇编02
Assembler Directives .align integer, padThe .align directive causes the next data generated to be al ...
- generator (1)
function array () { console.log(arguments) }; array(1,2,3) 从这里我们可以看出 数组的迭代方法里面有一个 属性 [Symbol.iterat ...
- 22.Express框架——2019年12月19日
2019年12月19日14:16:36 1. express简介 1.1 介绍 Express框架是后台的Node框架,所以和jQuery.zepto.yui.bootstrap都不一个东西. Exp ...
- RMQ Topic
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11794927.html RMQ Topic Project Directory Maven Depen ...
