根据使用环境,网络爬虫可分为 通用爬虫 和 聚焦爬虫

通用爬虫:从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持 他决定着整个引擎系统内容是否丰富集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。

HTTP协议(HyperText Transfer Protocol)中文名叫超文本传输协议: 是用于从网络传送超文本数据到本地浏览器的传送协议

HTTPS协议(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP协议的基础上加入SSL层。 SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。
HTTP的端口号为80, HTTPS的端口号为443
HTTPS的安全基础是SSL,因此通过它可以传输的内容都是经过SSL加密的,主要作用是:

建立一个安全有效的信息传送通道,保证数据传送的安全性
确定网站的真实性和有效性

什么是I/O? I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。 在POSIX兼容的系统上,例如Linux系统 [1] ,I/O操作可以有多种方式,比如DIO(Direct I/O),AIO(Asynchronous I/O,异步I/O),Memory-Mapped I/O(内存映射I/O)等,不同的I/O方式有不同的实现方式和性能,在不同的应用中可以按情况选择不同的I/O方式。

r:代表读

rb:代表二进制读

r+:代表读和写

rb+:代表二进制读和写

w:代表写

wb:代表二进制写

w+:代表读和写

wb+:代表二进制读写

a:代表写

ab:代表二进制写

a+:代表读写

ab+:代表二进制读写


python3中 str 使用encode方法转化为 bytes:

Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> str1 = "就像老鼠爱大米"
>>> type(str1)
<class 'str'>
>>> a = str1.encode()
>>> a
b'\xe5\xb0\xb1\xe5\x83\x8f\xe8\x80\x81\xe9\xbc\xa0\xe7\x88\xb1\xe5\xa4\xa7\xe7\xb1\xb3'
>>> type(str1.encode())
<class 'bytes'>

bytes通过decode转化为str:

>>> a
b'\xe5\xb0\xb1\xe5\x83\x8f\xe8\x80\x81\xe9\xbc\xa0\xe7\x88\xb1\xe5\xa4\xa7\xe7\xb1\xb3'
>>> type(a)
<class 'bytes'>
>>> a.decode()
'就像老鼠爱大米'
>>> type(a.decode())
<class 'str'>

bytearray bytearray和bytes不一样的地方在于,bytearray是可变的:

>>> a = '就像老鼠爱大米'
>>> a.encode()
b'\xe5\xb0\xb1\xe5\x83\x8f\xe8\x80\x81\xe9\xbc\xa0\xe7\x88\xb1\xe5\xa4\xa7\xe7\xb1\xb3'
>>> a[:6]=bytearray('不想'.encode())
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> b = bytearray(a.encode())
>>> b
bytearray(b'\xe5\xb0\xb1\xe5\x83\x8f\xe8\x80\x81\xe9\xbc\xa0\xe7\x88\xb1\xe5\xa4\xa7\xe7\xb1\xb3')
>>> b.decode()
'就像老鼠爱大米'
>>> b[:6]=bytearray('聚焦'.encode())
>>> b
bytearray(b'\xe8\x81\x9a\xe7\x84\xa6\xe8\x80\x81\xe9\xbc\xa0\xe7\x88\xb1\xe5\xa4\xa7\xe7\xb1\xb3')
>>> b.decode()
'聚焦老鼠爱大米'

接下来,让我们真正迈向我们的爬虫之路吧!

urllib库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。 在Python中有很多库可以用来抓取网页,我们先学习urllib。

我们会从下面三个方面讲解urllib:

request: 它是最基本的HTTP请求模块,可以用来模拟发送请求,就像在浏览器中输入网址,然后敲击回车键一样,使用的时候只需要给库方法传入相关的URL和相关的参数即可.

error: 异常处理模块,如果出现请求错误,我们可以使用这个模块来捕获异常,然后进行重试或者其他操作,保证程序不会意外终止.

parse: 这是一个工具模块,提供了许多url的处理方法,比如拆分,解析,合并等等

import urllib.request
#指定网址路径
ur = "https://www.zhihu.com"
response = urllib.request.urlopen(ur)
print(response)
print(type(response))
#已读的方式打开 并用decode解码
a = response.read().decode()
print(a)
#获取相应的头的信息
print(response.getheader('Server'))
#获取相应的头
print(response.getheaders())
#是否成功
print(response.reason)
#查看状态吗
print(response.status)

import urllib.parse
import urllib.request
def tiebaSpider(url, beginPage, endPage):for page in range(beginPage, endPage + 1):pn = (page - 1) * 10filename = "第" + str(page) + "页.html"fullurl = url + "&pn=" + str(pn)html = loadPage(fullurl, filename)writeFile(html, filename)
def loadPage(url, filename):print ("正在下载" + filename)headers = {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"}request = urllib.request.Request(url, headers = headers)response = urllib.request.urlopen(request)return response.read().decode()
def writeFile(html, filename):print ("正在存储" + filename)with open(filename, 'w') as f:f.write(str(html))
if __name__ == "__main__":kw = input("请输入需要爬取的贴吧:")beginPage = int(input("请输入起始页:"))endPage = int(input("请输入终止页:"))url = "http://tieba.baidu.com/s?"key = urllib.parse.urlencode({"kw" : kw})url = url + keytiebaSpider(url, beginPage, endPage)

西刺爬取数据

import mysql.connector
import urllib.request
import re
import pymysql
def connectdb():print('连接到mysql服务器...')# 打开数据库连接# 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Studentdb = mysql.connector.connect(user="root", passwd="bc123", database="pachong", charset='utf8')print('连接上了!')return db
def insertdb(db,ctx):# 使用cursor()方法获取操作游标 cursor = db.cursor()# SQL 插入语句sql = """INSERT INTO daili(%s) VALUES(%s)"""%(",".join([key for key,value in ctx.items()]),','.join(['%s' for key,value in ctx.items()]))try:# 执行sql语句cursor.execute(sql,[value for key,value in ctx.items()])# 提交到数据库执行db.commit()except:# Rollback in case there is any errorprint ('插入数据失败!')db.rollback()header = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36","Cookie":"_free_proxy_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFVEkiJTUzMmVjOGQzNDhkZDIzYWRmMTQwZTU3NTgxMTI2MTQyBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMWkraDVMYkJNcS9tS29nZnFvM21BaTJrVXprTzhWVjNFQktNQ21mV29JUFU9BjsARg%3D%3D--436d3bcf6bd2ea33617a6e928e439749993289f4; Hm_lvt_0cf76c77469e965d2957f0553e6ecf59=1536633145; Hm_lpvt_0cf76c77469e965d2957f0553e6ecf59=1536633455",
}for i in range(1,3438):url = "http://www.xicidaili.com/nn/"+str(i)req = urllib.request.Request(url,headers=header)response = urllib.request.urlopen(req)html = response.read().decode('utf-8')# with open(str(i+1)+'.html','w')as f:#     f.write(html)# file = open(str(i+1)+'.html')# result = file.read()# print(result)even_list = re.findall('<td class="country"><img.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<a .*?>(.*?)</a>.*?<td .*?>(.*?)</td>.*?<td>(.*?)</td>.*?<div .*?<td>(.*?)</td>.*?<td>(.*?)</td>',html,re.S)# print(even_list)for ct in even_list:ip_d = ct[0]dkou = ct[1]city = ct[2]ip_type = ct[3]http_xieyi = ct[4]y_day = ct[5]date_time_y = ct[6]ctx = {'ip_d':ip_d,'dkou':dkou,'city':city,'ip_type':ip_type,'http_xieyi':http_xieyi,'y_day':y_day,'date_time_y':date_time_y}db = connectdb()insertdb (db,ctx)

Python 爬虫基础相关推荐

  1. python基础代码库-python爬虫基础教程:requests库(二)代码实例

    get请求 简单使用 import requests ''' 想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载! ''' respons ...

  2. python基础知识整理-python爬虫基础知识点整理

    首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 根据我的经验,要学习Python爬虫 ...

  3. python爬虫基础(一)~爬虫概念和架构

    目录 1. 爬虫 1.1 概念 1.2 分类 2. 爬虫架构 2.1 url管理器 2.2 网页(html)下载(download)器 2.2.1 urllib下载html源码 2.2.2 reque ...

  4. 掌握Python爬虫基础,仅需1小时!

    随着互联网的发展,google.百度等搜索引擎让我们获取信息愈加方便.但需求总会不断涌现,纯粹地借助百度等收集信息是远远不够的,因此编写爬虫爬取信息的重要性就越发凸显. 比如有人为了炒股,专门爬取了多 ...

  5. Day2:python爬虫基础学习(大嘘)

    Day2:python爬虫基础学习(大嘘)) 教材&参考: 学习过程 Sublime配置教程 下载&安装 语言(设置中文) 设置字体/配色 配置Python环境 使用python官方编 ...

  6. python爬虫——基础知识

    python爬虫--基础知识 一.网页基础知识 二.爬虫的思路 1.HTML文档(超文本) 三.ROBOTS协议 四.浏览器发送HTTP请求的过程 1.http请求过程 2.请求 五.SSL连接错误 ...

  7. 结构化数据丨Python爬虫基础入门系列(7)

    提示:文末有福利!最新Python爬虫资料/学习指南>>戳我直达 文章目录 前言 JSON 1. json.loads() 2. json.dumps() 3. json.dump() 4 ...

  8. python爬虫基础(二)

    文章目录 python爬虫 1.异步爬虫 异步爬虫之多进程and多线程(不建议使用) 异步爬虫之线程池and进程池(适当使用) 单线程+异步协程(推荐) 补充:回调函数 补充:yield 多任务异步协 ...

  9. Python爬虫基础-如何获取网页源代码

    Python爬虫基础-如何获取网页源代码 网络爬虫(Web Crawler),又称网页蜘蛛(Web Spider),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.爬虫程序根据一组特定的规则 ...

  10. 毕业设计 python爬虫基础+数据分析

    学习目标: 完成内容:python爬虫基础+数据分析(3.23-4.10) 6天学会数据可视化内容 4月10号完成毕设论文 [如果没有被免毕业设计的话] 学习内容: 软件安装 安装python3.10 ...

最新文章

  1. 一举拿下高可用与分布式协调系统设计!
  2. 《Java编码指南:编写安全可靠程序的75条建议(英文版)》—— 2.7 修复错误...
  3. 神经网络为何成为学习算法的通用结构?
  4. python可以做什么项目-Python可以做大项目吗?
  5. python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』
  6. linux三剑客试题,linux三剑客-awk
  7. Bootstrap入门(二十九)JS插件6:弹出框
  8. Linux学习笔记 --服务器优化
  9. 动态规划——环形子数组的最大和(Leetcode 918)
  10. 盛科交换机配置命令_cisco2960交换机 清除配置的命令
  11. 自主开发新媒体,湖南卫视封杀网络转播权
  12. linux进入bios设置超线程,从BIOS开启超线程的方法
  13. java 将xxxx年x月x日转换成xxxx/xx/xx,日期格式化个位数前补0
  14. 类似微信5.x朋友圈的弹出框点赞功能PopupWindow
  15. 2021年最火的前端框架
  16. String tirm()方法去不掉的空格
  17. 【单镜头反光相机】相机与小孔成像
  18. BJFU 1399 警察抓小偷
  19. 【Linux】多线程下载工具axel的安装和使用
  20. AutoCAD2021使用方法与小技巧总结1

热门文章

  1. 【云原生-DevOps】企业级DevOps平台搭建及技术选型-项目管理篇
  2. c语言结构体编辑学生成绩管理,C语言基于结构体的学生信息管理系统实现
  3. 【Web系列二十】Django+Celery+Asgiref+Channels+协程锁实现Websocket异步并发
  4. STM32G474RE DAC+OPAMP
  5. Glove与Attention机制资料的整理
  6. 项目:宅人食堂——点餐系统
  7. 咕咕数据 HTML 转 Word API 接口
  8. Shell脚本编程--cut命令
  9. 传感器检测技术——传感器的动态特性
  10. OSChina 周六乱弹 —— 作为程序员我对高数的态度