爬取内容:

人人都是产品经理首页(www.woshipm.com)左侧【最新文章】下如图样式的文章标题、浏览量和缩略图。

思路:

1. 用BeautifulSoup解析网页

变量名 = BeautifulSoup(网页信息,'lxml')

2. 描述要爬取的内容在哪儿

变量名 = 变量名.select()

3. 爬取出我们想要的内容

接下来看具体实现。

1. 我们需要先安装将使用到的库:BeautifulSoup、requests、lxml,安装方法参见我之前的一篇文章:《Python入门:如何使用第三方库?》。其中BeautifulSoup和lxml是常用的第三方库,用来解析网页。然后插入BeautifulSoup和requests库。

 from bs4 import BeautifulSoup
 import requests

2. 插入好第三方库后,需要描述我们想要爬取的信息在哪儿。

 url = 'http://www.woshipm.com'
 web_data = requests.get(url)
 soup = BeautifulSoup(web_data.text,'lxml')
 titles = soup.select('h2.stream-list-title > a')
 pageviews = soup.select('footer > span.post-views')
 imgs = soup.select('div.stream-list-image > a > img')

我们逐行来看下。

第一行:写明我们是从哪个网页中获取信息;

第二行:web_data为变量名,用requests库的get来请求这个网页中的信息;

第三行:soup为变量名,调用BeautifulSoup和lxml库来解析网页,其中web_data.text为我们要获取的网页的文本信息;

第四行:写明变量titles的具体位置,使用select方法来实现,括号内为标题在网页中的位置,位置的获取方法如下:

用Google浏览器打开该页面——鼠标移入标题处,右键选择【检查】——右侧可以看到标题对应的代码,鼠标放置代码处右键【Copy】——选择【Copy selector】。BeautifulSoup支持selector,不支持XPath。

这时可以获得标题的路径,复制出来的路径应该是个比较长的路径,我删去了前面的部分,保留了标题前的2-3层来代表其路径。

第五行pageviews、第六行imgs方法同上。

3. 做好上面两步后,接下来我们要爬取出我们的目标信息,并将它们装入字典中,关于字典的用法在文章《Python入门:数据结构的4种基本类型》中有说明。

 for title,pageview,img in zip(titles,pageviews,imgs):
     data = {
         'title':title.get_text(),
         'pageview':pageview.get_text(),
         'img':img.get('src')
     }
     print(data)

本案例中我们爬取的数据有3个,标题(titles)、浏览量(pageviews)、图片(imgs),我们可以将三个数据放在一起用zip来实现。关于for循环的使用在文章《Python入门:for循环、while循环》中有提到。

运行程序后,可以得到我们想要的结果(woshipm首页默认加载的10篇文章数据)。

最后,附完整代码:

 from bs4 import BeautifulSoup
 import requests

 url = 'http://www.woshipm.com'
 web_data = requests.get(url)
 soup = BeautifulSoup(web_data.text,'lxml')
 titles = soup.select('h2.stream-list-title > a')
 pageviews = soup.select('footer > span.post-views')
 imgs = soup.select('div.stream-list-image > a > img')

 for title,pageview,img in zip(titles,pageviews,imgs):
     data = {
         'title':title.get_text(),
         'pageview':pageview.get_text(),
         'img':img.get('src')
     }
     print(data)

建议大家可以使用类似的方法去爬取下比如作者信息、收藏量等,或换个网页做新的尝试。Learning by doing。

操作环境:Python版本,3.6;PyCharm版本,2016.2;电脑:Mac

-----   End   -----

作者:杜王丹,微信公众号:杜王丹,互联网产品经理。

Python爬虫:爬取人人都是产品经理的数据的更多相关文章

  1. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

  2. 用Python爬虫爬取广州大学教务系统的成绩(内网访问)

    用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

  3. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  4. Python爬虫爬取全书网小说,程序源码+程序详细分析

    Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...

  5. python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...

  6. 一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...

  7. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  8. python爬虫爬取内容中,-xa0,-u3000的含义

    python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310

  9. python爬虫-爬取百度图片

    python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...

随机推荐

  1. 多个iframe中根据src获取特定iframe并执行操作

    多个iframe中根据src获取特定iframe并执行操作 前言:在项目中做一个批量编辑工单时需要在一大堆的iframe中的某一个iframe里边再用模态框的形式显示编辑区域,然后再在模态框里边加入i ...

  2. 关于Numba开源库(Python语法代码加速处理,看过一个例子,速度可提高6倍)

    关于Numba你可能不了解的七个方面 https://yq.aliyun.com/articles/222523 Python GPU加速 (很详细,有代码练习)https://blog.csdn.n ...

  3. JavaScript -- 时光流逝(十):Screen 对象、History 对象、Location 对象

    JavaScript -- 知识点回顾篇(十):Screen 对象.History 对象.Location 对象 1. Screen 对象 1.1 Screen 对象的属性 (1) availHeig ...

  4. php防范

    针对 PHP 的网站主要存在下面几种攻击方式: 1.命令注入(Command Injection) 2.eval 注入(Eval Injection) 3.客户端脚本攻击(Script Inserti ...

  5. LeetCode算法题-House Robber(Java实现)

    这是悦乐书的第187次更新,第189篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第46题(顺位题号是198).你是一个专业的强盗,计划在街上抢劫房屋. 每个房子都藏着一 ...

  6. 获取Spring容器Bean对象工具类

    在开发中,总是能碰到用注解注入不了Spring容器里面bean对象的问题.为了解决这个问题,我们需要一个工具类来直接获取Spring容器中的bean.因此就写了这个工具类,在此记录一下,方便后续查阅. ...

  7. es6拼接字符串``

    不需要任何的加号和引号,全部字符仅仅由一组``符号包裹即可,而放置动态数据或者变量即用${变量}方式即可, 看着是真的一目了然啊,最主要是终于可以摆脱被拼接字符支配的恐惧了,哈哈哈哈.

  8. 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)

    前言:在使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)中已经介绍了如何对web基础环境进行搭建,这里主要演示,如何对spring环境进行搭建,然后 ...

  9. C#自动化操作IE浏览器系列之一打开新的浏览器并导航到百度进行搜索

    现在OA系统.生产管理系统都是B/S结构,很多的办公室工作都要用浏览器操作.自己会一点C# winform开发,就做个小工具自动化处理一些繁琐的操作. 我的开发环境是:win7旗舰版+VS2010(或 ...

  10. Java8时间的简单时间

    package com.java8.date; import org.junit.Test; import java.text.SimpleDateFormat; import java.time.* ...