分享爬虫的简单知识。附带爬虫案例。
用Python写一个的爬虫。对于Python这个脚本语言来说写爬虫不是一件很难的事情。在写爬虫之前我们先了解一些简单的爬虫知识。爬虫分类:1. 通用网络爬虫 百度,门户网站 2. 聚焦网络爬虫 3. 增量式网络爬虫 4. 深层页面爬虫简单爬虫架构:1. URL管理器 Universal Resource Location 2. 网页下载器 3. 网页解析器 4. 输出管理器Python实现网页解析的常用工具1. 正则表达式 Regular Expression 2. Lxml库 Xpath语法 HTML XML<div><p>你好</p></div> 3. BeautifulSoup BS常见爬虫框架Scrapy 最流行 Pyspider 国人编写 Cola 分布式爬虫框架下面我们先写一个简单的爬虫:
爬取百度logo >>> import requests >>> response = requests.get('https://www.baidu.com/img/bd_logo1.png') >>> with open('logo.png','wb') as logo: ... logo.write(response.content) ...response.text response.encoding response.content response.status_code上述爬虫打开百度首页就可以看到一个百度的logo。我们做的事就是将那个logo爬出来。 简单的爬取像上述即可,当我们需要爬取很多数据的时候我们就需要将自己伪装一下,避免被爬取的网站将你的ID封掉。怎么做呢? 我们可以将请求头更换为一个浏览器做一个迷惑。 方法如下: 定制请求头 >>> headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3514.0 Safari/537.36'}
{}中间的User-Agent是怎么来的呢? 具体做法如下:下面是一个百度首页,我们按F12就会出现如下界面,没有的话刷新一下。最下面我们就可以看到一个user-agent,这个东西就是请求头。我们复制即可。当然其他浏览器也可以。下面我们就来做一个爬安居客租房信息:#爬取安居客西安租房信息import requests #import引入各种库 from lxml import etree import csv import time import random from pip._vendor.msgpack.fallback import newlist_hintdef spider(): #定义抓取函数headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3514.0 Safari/537.36'}#定制一个请求头,伪装成浏览器prefix_url = 'https://xa.zu.anjuke.com/fangyuan/p'#爬取的网站页面for i in range(1, 10 ):url = prefix_url + str(i)html = requests.get(url, headers=headers)selector = etree.HTML(html.text)house_list = selector.xpath('//*[@id="list-content"]/div')house_list=house_list[2:-2]#去除列表头尾不是房源列表的divfor house in house_list:title = house.xpath('div[1]/h3/a/text()')[0]area = house.xpath('div[1]/p[1]/text()')[0]unit_price = house.xpath('div[2]/p/strong/text()')[0]span = house.xpath('div[1]/p[2]/span[1]/text()')[0]square = house.xpath('div[1]/p[1]/text()[2]')[0]print(title,area,unit_price,span,square)item = [title,area,unit_price,span,square]#保存数据data_write(item)# 休息2-3秒time.sleep(random.randint(2, 3)) def data_write(item):#定义保存函数with open('fangyaun.csv','a',encoding='utf-8',newline='') as file:writer = csv.writer(file)writer.writerow(item)# 定义一个主函数 if __name__ == '__main__':spider()
一个简单的爬虫算是完成了。分享使人快乐,越分享、越快乐。
分享爬虫的简单知识。附带爬虫案例。相关推荐
- 【Python 爬虫】简单的网页爬虫
这边有一个用来测试的网站点击跳转 简单的网页爬虫 requests的使用 使用requests获取网页的源代码 requests与正则结合 多线爬虫 多进程库 开发多线程爬虫 爬虫算法的开发 深度优先 ...
- 爬虫(一):爬虫的基础知识 ---通用爬虫和聚焦爬虫,http和https协议,常见的响应状态码
一.爬虫的定义 网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 二.爬虫可以解决的问题 解决冷启动问题 搜索引擎的根基. -通用爬虫 帮助机器学习建立知识图谱 制作各种比价软件 三 ...
- python 微信爬虫_python3简单实现微信爬虫
使用ghost.py 通过搜搜 的微信搜索来爬取微信公共账号的信息 # -*- coding: utf-8 -*- import sys reload(sys) import datetime imp ...
- java怎么写网络爬虫_教你如何编写简单的网络爬虫
一.网络爬虫的基本知识 网络爬虫通过遍历互联网络,把网络中的相关网页全部抓取过来,这体现了爬的概念.爬虫如何遍历网络呢,互联网可以看做是一张大图,每个页面看做其中的一个节点,页面的连接看做是有向边.图 ...
- Python网络爬虫(一):爬虫基础
Python网络爬虫(一)爬虫基础 一.爬虫基础 1.HTTP基本原理 1.1URI和URL URI,全称:Uniform Resource Identifier,即统一资源标志符:URL,全称:Un ...
- nodejs爬虫与python爬虫_爬虫知多少-(NodeJS 爬虫)
不久前在公司做了一个关于爬虫的分享,简单介绍了网络爬虫的基础知识.爬虫的运作方式.抓取策略.攻防方式以及如何使用 NodeJS 进行爬虫开发, 在这里分享给各位同学分享一下~ 一.爬虫简介 二.爬虫的 ...
- Python之网络爬虫(爬虫基本认知、网络爬虫之路)
文章目录 一.爬虫基本认知 二.爬虫之路 初级爬虫工程师 中级爬虫工程师 高级爬虫工程师 一.爬虫基本认知 1.爬虫的简单定义 网络爬虫,又称为网页蜘蛛.蚂蚁.蠕虫.模拟程序,在FOAF社区中,被称为 ...
- (一)python网络爬虫(理论+实战)——爬虫的初步认识
小白都能学会的python网络爬虫专栏: https://blog.csdn.net/c1007857613/category_12127982.html 序言 本人从事爬虫相关工作已8年以上,从一个 ...
- 爬虫(20)Scrapy知识补充+腾讯招聘案例+古诗文详情页+总结
文章目录 第十八章 腾讯招聘案例 1. 腾讯招聘案例 2. 代码实现 2.1 配置项目 2.2 解析数据 2.3 翻页处理 2.4 获取详情页信息 3. 古诗词网补充 3.1 验证是否在源码中 3.2 ...
最新文章
- 有人说 Maven 很简单,我却被 伤害 过
- MPB:林科院袁志林组-利用acdSf3/acdSr4引物快速鉴定产ACC脱氨酶细菌
- 3层交换机和2层交换机的区别
- OSI 七层参考模型
- 【Network Security!】Web安全学习及异或解密示例
- oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...
- php模拟登录qq邮箱_PHP 利用QQ邮箱发送邮件的实现
- SpringBoot整合Redis集群版本问题
- Servlet中参数获取方法
- Asp.Net递归遍历页面控件实例
- spring securiy使用总结
- android 阿拉伯语下布局,android设计的布局在阿拉伯语下界面错乱的解决方法
- 昆腾助用户步入大数据和云时代
- 夏普(SHARP) LS050T1SX01 液晶屏接口定义
- 逻辑左移、算术左移、逻辑右移、算术右移
- java mybatis多层collection嵌套查询
- 工作杂谈001-供应商对接
- 2021湖南耒阳二中高考成绩查询,来自耒阳各校的高考喜报
- IT讲师韩顺平:创业不易,尚硅谷延续教育初心
- HDU 5761 Rower Bo