Python3.5 网络爬虫简单入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j086924/article/details/82689454

一.网络爬虫简单介绍

网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫.

相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:

(1). 对抓取目标的描述或定义;

(2). 对网页或数据的分析与过滤;

(3) .对URL的搜索策略.

二.网络爬虫步骤:

开发环境准备:Ubuntu16.04+Python3.5+PyCharm

(1). 首先通过urllib的request打开Url得到网页html文档;

(2). 右键点击浏览器打开网页源代码分析元素节点;

(3) .通过Beautiful Soup或正则表达式提取需要的数据;

(4) .存储数据到磁盘或数据库(抓取,分析).

三.网络爬虫实例简介

1.爬取百度首页的标题汉字

(1).代码展示baidu.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : baidu.py
# @Author: Jon
# @Date  : 18-9-13
# @Desc  :

from bs4 import BeautifulSoup
from urllib import request

def parse(url):
    response = request.urlopen(url)
    html = response.read()
    data = html.decode("utf-8")
    soup = BeautifulSoup(data, "html.parser")
    for list in soup.find_all("a"):
        if list.string==None:
            continue
        else:
            print(type(list.string))
            print(list.string)

if __name__=="__main__":
    url = "http://www.baidu.com"
    parse(url)

(2).run结果

<class 'bs4.element.NavigableString'>
手写
<class 'bs4.element.NavigableString'>
拼音
<class 'bs4.element.NavigableString'>
关闭
<class 'bs4.element.NavigableString'>
百度首页
<class 'bs4.element.NavigableString'>
登录
<class 'bs4.element.NavigableString'>
新闻
<class 'bs4.element.NavigableString'>
hao123
<class 'bs4.element.NavigableString'>
地图
<class 'bs4.element.NavigableString'>
视频
<class 'bs4.element.NavigableString'>
贴吧
<class 'bs4.element.NavigableString'>
学术
<class 'bs4.element.NavigableString'>
登录
<class 'bs4.element.NavigableString'>
设置
<class 'bs4.element.NavigableString'>
更多产品
<class 'bs4.element.NavigableString'>
资讯
<class 'bs4.element.NavigableString'>
贴吧
<class 'bs4.element.NavigableString'>
知道
<class 'bs4.element.NavigableString'>
音乐
<class 'bs4.element.NavigableString'>
图片
<class 'bs4.element.NavigableString'>
视频
<class 'bs4.element.NavigableString'>
地图
<class 'bs4.element.NavigableString'>
文库
<class 'bs4.element.NavigableString'>
更多»
<class 'bs4.element.NavigableString'>
把百度设为主页
<class 'bs4.element.NavigableString'>
关于百度
<class 'bs4.element.NavigableString'>
About  Baidu
<class 'bs4.element.NavigableString'>
百度推广
<class 'bs4.element.NavigableString'>
使用百度前必读
<class 'bs4.element.NavigableString'>
意见反馈
<class 'bs4.element.NavigableString'>
京公网安备11000002000001号

Process finished with exit code 0

2.爬取知乎网健身美女的图片

(1).代码展示zhihu.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : zhihu.py
# @Author: Jon
# @Date  : 18-9-13
# @Desc  :

from urllib import request
from bs4 import BeautifulSoup
import re
import time

def parse(url):
    html = request.urlopen(url).read().decode('utf-8')
    soup = BeautifulSoup(html, 'html.parser')

    links = soup.find_all('img', 'origin_image zh-lightbox-thumb', src=re.compile(r'.jpg$'))
    print(links)

    path = r'/home/jon/picture/'
    for link in links:
        print(link.attrs['src'])
        request.urlretrieve(link.attrs['src'], path + '%s.jpg' % time.time())



if __name__=="__main__":
    url = "https://www.zhihu.com/question/22918070"
    parse(url)

3.爬取importnew网站首页文章的标题和链接

(1).代码展示importnew.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : importnew.py
# @Author: Jon
# @Date  : 18-9-13
# @Desc  :

from urllib import request
from bs4 import BeautifulSoup

def parseTitle(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
    page = request.Request(url, headers=headers)
    page_info = request.urlopen(page).read().decode('utf-8')
    soup = BeautifulSoup(page_info, 'html.parser')

    titles = soup.find_all('a', 'meta-title')
    for title in titles:
        print(title.string)
        print(title.get('href'))

(2).run结果

Java异常处理的9个最佳实践
http://www.importnew.com/29603.html
Map大家族的那点事儿(1) :Map
http://www.importnew.com/29642.html
SpringBoot | 第十五章:基于Postman的RESTful接口测试
http://www.importnew.com/29635.html
Map大家族的那点事儿(3) :TreeMap
http://www.importnew.com/29713.html
Map 大家族的那点事儿 ( 7 ) :ConcurrentHashMap
http://www.importnew.com/29832.html
Map 大家族的那点事儿 ( 6 ) :LinkedHashMap
http://www.importnew.com/29828.html
Map 大家族的那点事儿 ( 5 ) :WeakHashMap
http://www.importnew.com/29825.html
JDK 源码阅读 : DirectByteBuffer
http://www.importnew.com/29817.html
Java 线程池详解
http://www.importnew.com/29813.html
Java线程面试题 Top 50
http://www.importnew.com/12773.html
8张图理解Java
http://www.importnew.com/11725.html
Java 8简明教程
http://www.importnew.com/10360.html
100个高质量Java开发者博客
http://www.importnew.com/7469.html
HashMap的工作原理
http://www.importnew.com/7099.html
分布式实时日志分析解决方案 ELK 部署架构
http://www.importnew.com/27705.html
IDEA 代码生成插件 CodeMaker
http://www.importnew.com/27685.html
代码生成利器:IDEA 强大的 Live Templates
http://www.importnew.com/27671.html
编写高质量代码的思考
http://www.importnew.com/27574.html
Map 大家族的那点事儿 ( 6 ) :LinkedHashMap
http://www.importnew.com/29828.html
Map 大家族的那点事儿 ( 5 ) :WeakHashMap
http://www.importnew.com/29825.html
JDK 源码阅读 : DirectByteBuffer
http://www.importnew.com/29817.html
Java 线程池详解
http://www.importnew.com/29813.html
Map大家族的那点事儿(4) :HashM...
http://www.importnew.com/29724.html
Linux 查看进程消耗内存情况总结
http://www.importnew.com/29782.html
SpringBoot | 第十七章:web ...
http://www.importnew.com/29795.html
SpringBoot | 第十八章:web 应用开...
http://www.importnew.com/29800.html
Java 线程池详解
http://www.importnew.com/29813.html
JDK 源码阅读 : DirectByteBu...
http://www.importnew.com/29817.html
Map 大家族的那点事儿 ( 5 ) :We...
http://www.importnew.com/29825.html
Map 大家族的那点事儿 ( 6 ) :Lin...
http://www.importnew.com/29828.html
Map 大家族的那点事儿 ( 7 ) :Concu...
http://www.importnew.com/29832.html
Java面试:投行的15个多线程和并发...
http://www.importnew.com/29562.html
SpringBoot | 第九章:Mybatis-p...
http://www.importnew.com/29501.html
SpringBoot | 第十三章:测试相...
http://www.importnew.com/29579.html
 SpringBoot | 第十二章:Rabb...
http://www.importnew.com/29557.html
一次Java内存泄漏调试的有趣经历
http://www.importnew.com/29591.html
oracle 中 print_table 存储过程...
http://www.importnew.com/29698.html
按钮条件逻辑配置化的可选技术方案
http://www.importnew.com/29704.html
Map大家族的那点事儿(3) :TreeM...
http://www.importnew.com/29713.html
Map大家族的那点事儿(4) :HashM...
http://www.importnew.com/29724.html
Linux查看分区文件系统类型总结
http://www.importnew.com/29492.html

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/j086924/article/details/82689454