Python爬虫知识点一
一。入门知识:
1.1.HTTP简介
HTTP = HyperText Transfer Protocol
URI = Uniform Resource Identifier
URL = Uniform Resource Locator
URI和URL的区别:URI强调的是资源,而URL强调的是资源的位置。
1.2常用请求类型
OPTIONS: 返回服务器针对特定资源所支持的http请求方法。
HEAD: 向服务器索要与get请求相一致的响应,只不过响应体将不会被返回。
GET: 向特定资源发出请求
PUT: 向指定资源位置上传其最新内容
POST: 向指定资源提交数据进行处理请求
DELETE: 请求服务器删除指定URI所标识的资源
PATCH: 用来将局部修改应用于某一资源
1.3HTTP常见状态码
200/OK: 请求成功
201/Created: 请求已被实现,且一个新资源已根据请求被建立,URI跟随Location头信息返回。
202/Accepted: 服务器已接受请求,但尚未处理。
400/Bad Request: 请求无法被服务器理解
401/Unauthorized: 当前请求需要用户验证
403/Forbidden: 服务器已理解请求,但拒绝执行。
404/Not Found
1.4 爬虫框架介绍
第一步:将种子URL放入队列
第二步:从队列中获取URL,抓取内容。
第三步:解析抓取内容,将需要进一步抓取的URL放入工作队列,存储解析后的内容
1.5 抓取策略
深度优先:举例先完成专题一的所有内容,再完成专题二的所有内容。
广度优先
PageRank
大站优先策略 举例: 根据网站的Pr顺序 指定优先级
1.6 如何去重
Hash表
bloom过滤器
1.7 爬虫质量标准
分布式
可伸缩性
性能和有效性
质量
新鲜性
更新
可扩展性
二。代码实施
import requests
import xml.etree.ElementTree as ET
from xml.parsers.expat import ParserCreate class DefaultSaxHandler(object):
def __init__(self, provinces):
self.provinces = provinces # 处理标签开始
def start_element(self, name, attrs):
if name != 'map':
name = attrs['title']
number = attrs['href']
self.provinces.append((name, number)) # 处理标签结束
def end_element(self, name):
pass # 文本处理
def char_data(self, text):
pass def get_province_entry(url):
# 获取文本,并用gb2312解码
content = requests.get(url).content.decode('gb2312')
# 确定要查找字符串的开始结束位置,并用切片获取内容。
start = content.find('<map name=\"map_86\" id=\"map_86\">')
end = content.find('</map>')
content = content[start:end + len('</map>')].strip()
print(content)
provinces = []
# 生成Sax处理器
handler = DefaultSaxHandler(provinces)
# 初始化分析器
parser = ParserCreate()
parser.StartElementHandler = handler.start_element
parser.EndElementHandler = handler.end_element
parser.CharacterDataHandler = handler.char_data
# 解析数据
parser.Parse(content)
# 结果字典为每一页的入口代码
return provinces provinces = get_province_entry('http://www.ip138.com/post')
print(provinces)
结果如下:
Ps: start方法中判断不等于map标签的即为area标签 然后选取href title属性对应的值即可
持续更新中。。。。,欢迎大家关注我的公众号LHWorld.
Python爬虫知识点一的更多相关文章
- python爬虫知识点详解
python爬虫知识点总结(一)库的安装 python爬虫知识点总结(二)爬虫的基本原理 python爬虫知识点总结(三)urllib库详解 python爬虫知识点总结(四)Requests库的基本使 ...
- Python爬虫知识点四--scrapy框架
一.scrapy结构数据 解释: 1.名词解析: o 引擎(Scrapy Engine)o 调度器(Scheduler)o 下载器(Downloader)o 蜘蛛(Spiders)o 项目管 ...
- Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续一)
通过前一节得出地址可能的构建规律,如下: https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksT ...
- python爬虫知识点总结(八)Selenium库详解
官方学习文档:http://selenium-python.readthedocs.io/api.html 一.什么是Selenium? 答:自动化测试工具,支持多种浏览器.用来驱动浏览器,发出指令让 ...
- python爬虫知识点总结(一)库的安装
环境要求: 1.编程语言版本python3: 2.系统:win10; 3.浏览器:Chrome68.0.3440.75:(如果不是最新版有可能影响到程序执行) 4.chromedriver2.41 注 ...
- Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续二)
一.URL分析 通过对“Python机器学习”结果抓包分析,有两个无规律的参数:_ksTS和callback.通过构建如下URL可以获得目标关键词的检索结果,如下所示: https://s.taoba ...
- Python 爬虫知识点 - 淘宝商品检索结果抓包分析
一.抓包基础 在淘宝上搜索“Python机器学习”之后,试图抓取书名.作者.图片.价格.地址.出版社.书店等信息,查看源码发现html-body中没有这些信息,分析脚本发现,数据存储在了g_page_ ...
- Python 爬虫知识点
一.基础知识 1.HTML分析 2.urllib爬取 导入urilib包(Python3.5.2) 3.urllib保存网页 import urllib.requesturl = "http ...
- python爬虫知识点总结(六)BeautifulSoup库详解
官方学习文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 一.什么时BeautifulSoup? 答:灵活又方便的网页解析库,处 ...
随机推荐
- java 类加载机制总结
Java程序的运行,离不开class的加载,所谓类加载就是将编译好的class文件加载的jvm并形成class对象,只有class正确加载才能被实例化和调用. public class test { ...
- 《Linux调优工具oprofile的演示分析》
根据CPU架构oprofile采样的触发有两种模式:1) NMI模式: 利用处理器的performance counter功能, 指定counter的类型type和累进数量count. 比如 type ...
- USACO Section 2.1 The Castle
/* ID: lucien23 PROG: castle LANG: C++ */ /********************************************************* ...
- 解析XML文件之使用SAM解析器
XML是一种常见的传输数据方式,所以在开发中,我们会遇到对XML文件进行解析的时候,本篇主要介绍使用SAM解析器,对XML文件进行解析. SAX解析器的长处是显而易见的.那就是SAX并不须要将全部的文 ...
- lua 中pairs 和 ipairs差别
ipairs 和pairs在lua中都是遍历tbale的函数可是两者有差别 1.pairs遍历table中的全部的key-vale 而ipairs会依据key的数值从1開始加1递增遍历相应的table ...
- Python - 首字母大写(capwords) 和 创建转换表(maketrans) 具体解释
首字母大写(capwords) 和 创建转换表(maketrans) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27 ...
- SOJ--Zig-Zag
Zig-Zag 在图形图像处理中经常须要将一个二维的图像矩阵转化为一维的向量.二维化一维的过程实际上就是将二维数组的元素按某种顺序构成一维数组. 一种经常使用的序列叫"Zig-Zag&quo ...
- android 自己创建一个凝视模板
android 自己创建一个凝视模板 作为一名程序猿 不仅要有一个写代码的能力,养成一个良好的编写习惯也是非常重要的. 今天给大家具体介绍一下怎样创建凝视模板,给每一个类和方法都自己手动去凝视信息也 ...
- Linux基础:xargs命令
简介 xargs可以将输入内容(通常通过命令行管道传递),转成后续命令的参数,通常用途有: 命令组合:尤其是一些命令不支持管道输入,比如ls. 避免参数过长:xargs可以通过-nx来将参数分组,避免 ...
- 微信小程序豆瓣电影项目的改造过程经验分享
在学习微信小程序开发过程中,一部分的难点是前端逻辑的处理,也就是对前端JS的代码编辑:一部分的难点是前端界面的设计展示:本篇随笔基于一个豆瓣电影接口的小程序开源项目进行重新调整,把其中遇到的相关难点和 ...