1.   什么是网络爬虫?

在大数据时代,信息的采集是一项重要的工作,而互联网中的数据是海量的,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题而生的。

网络爬虫(Web crawler)也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。它是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,可以自动采集所有其能够访问到的页面内容,以获取相关数据。

从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。

2.   网络爬虫的作用

1.可以实现搜索引擎

我们学会了爬虫编写之后,就可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在采集回来的信息中进行检索,即实现了私人的搜索引擎。

如果想获取一个简单的网站信息该怎么做呢?

import requests

# 获取百度网站信息
r = requests.get('http://www.baidu.com') # 查看状态码
print(r.status_code) # 指定字符编码
r.encoding = 'utf-8' print(r.text)

首先我们要导入requests 库 并用 r.requests.get获取到百度网站的信息 然后使用 r.status_code 查看到当前的状态码 如果是200则表示获取成功

r.encoding 指定字符编码  最后调用 r.text 将获取的内容输出出来

执行一下 我们想要的结果就出来了

那想获取网站上的商品信息又该怎么办呢

首先我们找到一个网站 搜索一件商品 点击进去 复制他的链接

然后进行程序的编写 这里我们要用到 try 和 except 方法

import requests

url = 'https://item.jd.com/100008348542.html'

try:
r = requests.get(url)
r.raise_for_status() # 检测状态码如果是200则不报错 如果不是200 则抛出异常
# 获取字符编码
r.encoding = r.apparent_encoding
print(r.text[:1000]) except:
print("爬取失败")

显示结果

是不是很简单呢?

例2

import requests

url = 'https://www.amazon.cn/dp/B06XGXXDV9?ref_=Oct_DLandingSV2_PC_45268aee_0&smid=A26HDXW89ZT98L'

try:
kv = {"User-Agent": 'Mozilla5.0'}
r = requests.get(url, headers=kv)
# headers=kv 将自己请求头部信息更改为 kv这个字典的数据
# 若果不更改头部信息默认是以requests库的身份去访问的网站
# 有时候会导致获取信息的获取异常 我们吧头部信息该为 Mozilla5.0
# 就会让服务器认为我们是以用户的身份去访问的网站
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text)
print(r.request.headers)
except:
print("爬取失败")

如果访问一个网站信息时发现 信息没有提取出来 则有可能是访问的服务器 通过判断你的头部信息拒绝了你的访问 这时候我们就要更改自己请求头的信息了

修改前

修改后 User-Agent 被修改了

如果你想要输入一个内容 查看百度返回的结果 可以通过查看百度接口来进行获取

我们可以看到当你输入图片 上面的wd会跟着输入的改变而改变 我们通过这个可以得出 只要修改wd的值就可以查看到相应的内容

下面我们通过代码来实现一下百度的搜索

import requests

keyword=input("请输入你要查找的内容:")

try:
kv = {"wd":keyword,
"User-Agent": 'Mozilla5.0'
}
r = requests.get('http://www.baidu.com',kv)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失败")

显示结果 我们以len计算一下数据的长度就可以了

如果我们要获取网上的一张图片并将他保存在本地硬盘该怎么办呢?

首先我们鼠标右击复制图片地址

然后进行程序的编写

import requests
import os
#图片链接
url = 'http://b-ssl.duitang.com/uploads/item/201210/03/20121003220216_xTBdK.jpeg'
root = 'D://pics//'
path = root + url.split('/')[-1] try:
if not os.path.exists(root): #判断是否有这个目录 如果没有则创建一个
os.mkdir(root)
if not os.path.exists(path): #判断是否有这个文件如果没有 则从url链接上面获取
r = requests.get(url)
with open(path,'wb') as f:
f.write(r.content) #r.content 是文件的二进制返回内容 f.write(r.content) 将返回的二进制形式写到文件中
f.close()
print("文件保存成功")
else:
print("文件已存在")
except :
print("爬取失败")

然后产看D盘是否有这个文件

然后你就会发现图片已经保存在了本地 并且在pics目录下

pyhton 基础数据的爬取1的更多相关文章

  1. 爬虫(二)Python网络爬虫相关基础概念、爬取get请求的页面数据

    什么是爬虫 爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程. 哪些语言可以实现爬虫    1.php:可以实现爬虫.php被号称是全世界最优美的语言(当然是其自己号称的,就是王婆 ...

  2. 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

    web scraper 下载:Web-Scraper_v0.2.0.10 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬 ...

  3. Ajax数据的爬取(淘女郎为例)

    mmtao Ajax数据的爬取(淘女郎为例) 如有疑问,转到 Wiki 淘女郎模特抓取教程 网址:https://0x9.me/xrh6z 判断一个页面是不是 Ajax 加载的方法: 查看网页源代码, ...

  4. Python_记一次网站数据定向爬取实现

    记一次网站数据定向爬取实现 by:授客 QQ:1033553122 测试环境: Python版本:Python 3.4 Win7 请勿用于商业及非法用途,仅供学习研究用,否则后果自负 数据爬取场景 如 ...

  5. 爬虫--selenuim和phantonJs处理网页动态加载数据的爬取

    1.谷歌浏览器的使用 下载谷歌浏览器 安装谷歌访问助手 终于用上谷歌浏览器了.....激动 问题:处理页面动态加载数据的爬取 -1.selenium -2.phantomJs 1.selenium 二 ...

  6. 爬虫开发6.selenuim和phantonJs处理网页动态加载数据的爬取

    selenuim和phantonJs处理网页动态加载数据的爬取阅读量: 1203 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/ ...

  7. python爬虫---CrawlSpider实现的全站数据的爬取,分布式,增量式,所有的反爬机制

    CrawlSpider实现的全站数据的爬取 新建一个工程 cd 工程 创建爬虫文件:scrapy genspider -t crawl spiderName www.xxx.com 连接提取器Link ...

  8. (五)selenuim和phantonJs处理网页动态加载数据的爬取

    selenuim和phantonJs处理网页动态加载数据的爬取 一 图片懒加载 自己理解------就是在打开一个页面的时候,图片数量特别多,图片加载会增加服务器的压力,所以我们在这个时候,就会用到- ...

  9. 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)

    原文地址http://blog.csdn.net/qy20115549/article/details/52203722 本文为原创博客,仅供技术学习使用.未经允许,禁止将其复制下来上传到百度文库等平 ...

随机推荐

  1. HTML基础——表格的应用

    一.表格标签 1.基本格式: 每个表格由 table 标签开始. 每个表格行由 tr 标签开始. 每个表格数据由 td 标签开始. 例如: <html> <head> < ...

  2. apk系统签名小技巧

    前言 对于经常和android系统打交道的攻城狮来说,给app打系统签名一定是日常操作啦.由于最近使用的比较多,特此总结一下,减少复制粘贴的操作,通过命令行来搞定. 简化前的操作 1.Android ...

  3. MSSQL 删除数据库表数据

    --删除数据库表数据 慎用 create PROCEDURE sp_DeleteAllData AS ) ) ) ) ) ) begin try begin tran -- 失效索引,触发器 open ...

  4. IOR and mdtest - measure parallel file system I/O performance at both the POSIX and MPI-IO level.

    This parallel program performs writes and reads to/from files under several sets of conditions and r ...

  5. Centos7.6 Apache 虚拟机禁止访问IP,允许访问多域名多个虚拟目录设置

    存放配置文件路径 /etc/httpd/conf.d自定义命名,配置文件后缀格式确保 *.conf注:这是两个配置文件,也是两种方法. # 一个WEB目录# 禁止以IP地址形式访问<Virtua ...

  6. 《Web Development with Go》两个Middleware执行顺序

    也加了如果有认证时的执行流程: 一个错误, 一个正确. package main import ( "fmt" "log" "net/http&quo ...

  7. git pull出错:cannot pull into a repository with state: merging_resolved"

    git pull 出错解放办法:1.尝试先提交现有代码到本地,再更新2.git reset —hard

  8. 《Java面试全解析》505道面试题详解

    <Java面试全解析>是我在 GitChat 发布的一门电子书,全书总共有 15 万字和 505 道 Java 面试题解析,目前来说应该是最实用和最全的 Java 面试题解析了. 我本人是 ...

  9. Codeforces Round #599 (Div. 1) B. 0-1 MST 图论

    D. 0-1 MST Ujan has a lot of useless stuff in his drawers, a considerable part of which are his math ...

  10. MySQL数据库实战之优酷

    目录 一.项目总结三步骤 二.项目需求分析 三.搭建框架 四.ORM框架分析 五.数据库设计 六.项目中各个功能模块分析 七.项目中遇到的问题及怎么解决的 八.客户端代码框架 8.1 conf 8.1 ...