python 爬虫 教程_一个入门级python爬虫教程详解
前言
本文目的:根据本人的习惯与理解,用最简洁的表述,介绍爬虫的定义、组成部分、爬取流程,并讲解示例代码。
基础
爬虫的定义:定向抓取互联网内容(大部分为网页)、并进行自动化数据处理的程序。主要用于对松散的海量信息进行收集和结构化处理,为数据分析和挖掘提供原材料。
今日t条就是一只巨大的“爬虫”。
爬虫由URL库、采集器、解析器组成。
流程
如果待爬取的url库不为空,采集器会自动爬取相关内容,并将结果给到解析器,解析器提取目标内容后进行写入文件或入库等操作。
代码
第一步:写一个采集器
如下是一个比较简单的采集器函数。需要用到requests库。
首先,构造一个http的header,里面有浏览器和操作系统等信息。如果没有这个伪造的header,可能会被目标网站的WAF等防护设备识别为机器代码并干掉。
然后,用requests库的get方法获取url内容。如果http响应代码是200 ok,说明页面访问正常,将该函数返回值设置为文本形式的html代码内容。
如果响应代码不是200 ok,说明页面不能正常访问,将函数返回值设置为特殊字符串或代码。
import requests
def get_page(url):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
response = requests.get(url, headers= headers)
if response.status_code == 200:
return response.text
else:
return 'GET HTML ERROR !'
第二步:解析器
解析器的作用是对采集器返回的html代码进行过滤筛选,提取需要的内容。
作为一个14年忠实用户,当然要用豆瓣举个栗子 _
我们计划爬取豆瓣排名TOP250电影的8个参数:排名、电影url链接、电影名称、导演、上映年份、国家、影片类型、评分。整理成字典并写入文本文件。
待爬取的页面如下,每个页面包括25部电影,共计10个页面。
在这里,必须要表扬豆瓣的前端工程师们,html标签排版非常工整具有层次,非常便于信息提取。
下面是“肖申克的救赎”所对应的html代码:(需要提取的8个参数用红线标注)
根据上面的html编写解析器函数,提取8个字段。该函数返回值是一个可迭代的序列。
我个人喜欢用re(正则表达式)提取内容。8个(.*?)分别对应需要提取的字段。
import re
def parse_page(html):
pattern = re.compile('(.*?).*?.*?(.*?).*?
(.*?) .*?
(.*?) / (.*?) / (.*?)
.*?(.*?)' , re.S)
items = re.findall(pattern , html)
for item in items:
yield {
'rank': item[0],
'href': item[1],
'name': item[2],
'director': item[3].strip()[4:],
'year': item[4].strip(),
'country': item[5].strip(),
'style': item[6].strip(),
'score': item[7].strip()
}
提取后的内容如下:
整理成完整的代码:(暂不考虑容错)
import requests
import re
import json
def get_page(url):
#采集器函数
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}
response = requests.get(url, headers= headers)
if response.status_code == 200:
return response.text
else:
return 'GET HTML ERROR ! '
def parse_page(html):
#解析器函数
pattern = re.compile('(.*?).*?
python 爬虫 教程_一个入门级python爬虫教程详解相关推荐
- python查天气预报_一个用Python编写抓取天气预报的代码示例
Python代码抓取获取天气预报信息源码讲解.这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单.这段代码可以获取当地的天气和.任意城市的天气预报,原理是根据ur ...
- 怎么创建python django项目_创建Django项目图文实例详解
本文实例讲述了创建Django项目的方法.分享给大家供大家参考,具体如下: 创建Django项目 创建一个HelloDjango项目 GitHub地址:https://github.com/liang ...
- python适配器模式角色_适配器模式(Adapter模式)详解
在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配.例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访 ...
- mysql深入使用教程_深入mysql基础知识的详解
1.每个客户端连接都会从服务器进程中分到一个属于它的线程.而该连接的相应查询都都会通过该线程处理. 2.服务器会缓存线程.因此并不会为每个新连接创建或者销毁线程. 3.当发起对MySQL服务器的连接时 ...
- 怎么用python爬图片_如何用Python来制作简单的爬虫,爬取到你想要的图片
在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...
- python 字符串替换_Python基础教程,第四讲,字符串详解
本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...
- python小游戏代码大全-20行python代码的入门级小游戏的详解
背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个小例程,当着练练手 ...
- PyKivy入门教程:Kivy Python库的介绍、安装及使用方法详解
PyKivy入门教程:Kivy Python库的介绍.安装及使用方法详解 Kivy是一个跨平台的Python GUI工具包,可以用于开发能够在多种设备和操作系统上运行的应用程序.Kivy支持触摸输入. ...
- python telnet线程锁_对python使用telnet实现弱密码登录的方法详解
系统环境: 64位win7企业版 python2.7.10 2016.08.16修改内容: 1)read_until()函数是可以设置timeout的,之前不能获取到password之后的返回是因为调 ...
最新文章
- python 列表算平均分_python平均列表
- Science背靠背: NLR受体介导植物抗病反应新机制
- 【Python基础】14_Python中的TODO注释
- wxWidgets:wxSizerFlags类用法
- Linq to Sql 动态条件另类实现方法
- yum httpd安装详解
- paip.hibernate list 返回位null的解决
- MATLAB画qpsk的矢量图,matlab仿真QPSK.doc
- 2017云栖大会Tech Insight亮点大剧透
- 互联网知识变现,不起眼利润高的冷门行业有哪些?
- mysql用户域账户登录_使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000...
- 影音视频领域开源项目专区
- 项目案例:吃货联盟,订餐系统
- 图片公式提取至文档word
- 搜狗输入法自动打开问题
- 小智直播配置安装-配置录播,回放
- 【Matlab元胞自动机】元胞自动机大型商场人流疏散【含源码 665期】
- 三种洗牌算法shuffle
- 如何替换android apk中的so
- java中线程控制方法的说法正确的是_在java程序中,下列关于线程的说法错误的时()...