python 简单爬虫(beatifulsoup)

---恢复内容开始---

python爬虫学习从0开始

    第一次学习了python语法,迫不及待的来开始python的项目。首先接触了爬虫,是一个简单爬虫。个人感觉python非常简洁,相比起java或其他面向对象的编程语言,动态语言不需要声明函数或变量类型。python有20年的发展历史,以简洁高效闻名,python最初只是一个马戏团的名字,它的哲学是‘用一种方法完成一件事情’。我第一次使用python时就被它的简洁高效迷住了,相比起c++和java,他简直太棒了。而且现阶段的大数据和人工智能领域,python都有着绝对无可替代的地位。

   一、爬虫是什么?

    大数据时代,海量的数据以兆亿级的规模出现,而且每时每刻都在不停的变化,怎样从这么多数据中提取我们所需要的数据,就变得十分的重要,尤其对于一些大企业,数据就是公司发展的命脉。网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。就是爬虫程序会自动沿着制定的URL去爬取有用的数据,搜索引擎就是建立在爬虫基础上的。但是搜索引擎有自身的局限性,只能够通过关键字进行检索,我们需要手动进入相关网页进行筛选。这个时候如果利用爬虫,就能够实现简单的定向抓取。

   二、爬虫涉及到的python知识?

     爬虫经历三个步骤:首先向目标网页发出请求,经服务器返回一个响应html的源码;然后通过beatifulsoup库或者Xpath表达式来对源码进行解析,提取有用信息;最后通过文件保存相关信息,进行数据清洗或分析。

      我们所需要的环境:IDE的话pycharm就好,个人认为这个是最好的pythonIDE,支持windows以及mac系统。当然你必须先在自己的电脑安装python,具体安装方法百度即可,在这个地方说明的是,python2.7是默认在mac上,不过用就用最新版的吧,python3和python2有区别的。直接用vim写也可以。这里需要使用谷歌浏览器分析源网页html代码。

   三、爬取豆瓣网的top250:

    开始之前需要了解谷歌浏览器的操作:

    直接在 更多 选择工具的开发者工具,这里可能需要用到html的知识,其实就是一些标签,如<div>、<a>、<span>等等。(具体学习一下html吧!)然后,单击右键选择标题如《肖申克的救赎》,使用检查命令。可以在右侧Elements里面看到<span class="title">这个标签,中间的中文就是我们需要爬取的电影名字。同样我们还需要爬取的是评分,可以找到<span class="rating_num">这样的标签,当然你也可以爬取一句话评语。

    我用到requests库,当然还有urllib这个库也可以,这个比较繁琐。pycharm中可以直接安装,bash中使用pip3的指令。

    首先,我们需要向目标网页发送下载请求:

    url=‘https://movie.douban.com/top250‘

    res=requests.get(url)

    print(res.status_code)    

    这里可能会有乱码。因为你没有定义下载的html代码的编码格式,在res后面附加一句:res.encoding=‘UTF-8‘,即可。同样网站会有反爬措施,诸如过频繁请求,或者限制,这是需要使用一个user-agent:就在network这个卡的最下面,不过一般使用Mozilla/5.0就可以。定义一个头文件:(复制粘贴就可以)

headers={
‘user-agent‘:‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36‘,
‘Host‘:‘movie.douban.com‘
}

替换:res=requests.get(url,headers=headers)

这个时候你的status_code就会是200,200表示正常反馈。400就是不正常。(反爬手段)

      当然你可以下载html代码自己看看,不过挺杂乱。直接  print(res.text)  就行了。

     好了,已经获得了网页源码,这个时候就该解析相关数据了:beatifulsoup实例化。

      soup=BeatifulSoup(res.text,‘html.parser‘)  #建立soup对象。

      div_list=soup.find_all(‘div‘,class_=‘hd‘)  #这里的div标签在<li>标签下面,每一个<li>标签都表示一部电影的信息。我们所需要的信息都存在<div class=‘hd‘>里。

      for each in div_list:

      movie=each.find(‘a‘).find(‘span‘).text.strip()

      movie_list.append(movie)

       movie_list是一个空列表,专门存放电影名字。strip()函数是去除字符串两端的字符,这里是去除空格。但是我们发现,网页貌似有10页面,我们这里利用for循环遍历url。

url变化的只是最后一部分的:

     movie_list=[]

     for i in range(0,10):

        url=‘http://movie.douban.com/top250?start=‘+str(i*25)

        res=......

        soup=BeatifulSoup(res.text,‘html.parser‘)

        div_list=soup.find_all(‘div‘,class_=‘hd‘)  

        for each in div_list:

          movie=each.find(‘a‘).find(‘span‘).text.strip()

          movie_list.append(movie)

      return movie_list

     这样就可以了。简单的爬虫就完成了。    

       最后我们需要将取得的数据存储。你也可以选择存进mysql,具体涉及pymysql。

       file=‘desktop/douban.csv‘

     with open(file,‘w+‘) as f:

        f.write(movie_list)

        f.close()

       csv用文本编辑器打开。也可用excle打开具体百度。     

    

    

    

  

    

原文地址:https://www.cnblogs.com/zhouwenfan-home/p/9465520.html

时间: 2024-11-06 09:56:41

python 简单爬虫(beatifulsoup)的相关文章

Python 简单爬虫

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import os import time import webbrowser as web import random count = random.randint(20,40) j = 0 while j < count:     i = 0     while i <= 5:         web.open_new_tab('http://www.cnblogs.com/evilxr/p/37642

Python简单爬虫入门二

接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们BeautifulSoup的基本结构如下 #!/usr/bin/env python # -*-coding:utf-8 -*- from bs4 import BeautifulSoup import requests headers = { 'User-Agent':'Mozilla/5.0 (Win

Python简单爬虫第六蛋!(完结撒花)

第六讲: 今天我们来实战一个项目,我本人比较喜欢看小说,有一部小时叫<圣墟>不知道大家有没有听说过,个人觉得还是不错的,现在联网的时候,都可以随时随地用手机打开浏览器搜索查看,但是有时候也会遇到没有网络的情况,这个就很扎心了,有什么办法呢?所以这个项目基于这么一个现实背景来分析实现一下,把我们前几次讲到一些技术方法都运用一遍. (有人可能会说直接下载一个txt格式的小说文本文件不就好了,虽然是挺方便的,但是懒惰是不好的习惯,而且也没有运用到所学的知识,那么我们何必要学习呢?为什么要学,看完实例

Python 简单爬虫案例

Python 简单爬虫案例 import requests url = "https://www.sogou.com/web" # 封装参数 wd = input('enter a word') param = { 'query':wd } response = requests.get(url=url,params=param) page_text = response.content fileName = wd+'.html' with open(fileName,'wb') as

python简单爬虫

爬虫真是一件有意思的事儿啊,之前写过爬虫,用的是urllib2.BeautifulSoup实现简单爬虫,scrapy也有实现过.最近想更好的学习爬虫,那么就尽可能的做记录吧.这篇博客就我今天的一个学习过程写写吧. 一  正则表达式 正则表达式是一个很强大的工具了,众多的语法规则,我在爬虫中常用的有: . 匹配任意字符(换行符除外) * 匹配前一个字符0或无限次 ? 匹配前一个字符0或1次 .* 贪心算法 .*? 非贪心算法 (.*?) 将匹配到的括号中的结果输出 \d 匹配数字 re.S 使得.

python 简单爬虫diy

简单爬虫直接diy, 复杂的用scrapy import urllib2 import re from bs4 import BeautifulSoap req = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"}) webpage= urllib2.urlopen(req) soap = BeautifulSoap(webpage.read()) ...

python简单爬虫定时推送同花顺直播及荐股至邮箱

1.初衷:实践 2.技术:python requests Template 3.思路:根据直播页面获取评价最高的前十博主,定时爬行最新的消息和实战股票 4.思路:python 编辑简单邮件html模板 5.难点:邮件html模板的设计,还需要邮箱支持 爬虫文件 '''-- #coding:utf-8import requestsfrom lxml import etreefrom sendmail import sendmailimport sys, timefrom string import

python简单爬虫的实现

python强大之处在于各种功能完善的模块.合理的运用可以省略很多细节的纠缠,提高开发效率. 用python实现一个功能较为完整的爬虫,不过区区几十行代码,但想想如果用底层C实现该是何等的复杂,光一个网页数据的获得就需要字节用原始套接字构建数据包,然后解析数据包获得,关于网页数据的解析,更是得喝一壶. 下面具体分析分析用python如何构建一个爬虫. 0X01  简单的爬虫主要功能模块 URL管理器:管理待抓取URL集合和已抓取URL集合,防止重复抓取.防止循环抓取.主要需要实现:添加新URL到

Python简单爬虫第一蛋!

Python爬虫简单教程 一.准备工作: ①python 3.x 的环境 ②Windows 10 操作系统 ③能连接上互联网 二.注意事项: ①仅供参考学习,如有转载请注明出处! ②获取的数据不能用于商业应用,仅供学习. ③注意动手实践. 第一讲:第一个模块(requests)的使用教程 首先,需要安装一下requests 模块,这个在系统命令行(cmd)中用 pip install requests 命令完成.(这是很基本的操作,直接跳过哈) 然后打开我们的IDE(这里我用的是Spyder,也