爬取腾讯新闻首页资讯标题

实战第一篇:爬取腾讯新闻首页资讯标题

终于进入到我们的实战内容篇了,因为是第一篇,所以找一个简单的例子给大家介绍爬取的详细过程,这既是对基础篇知识的运用,也是增强大家往后学习的动力。

目标:爬取腾讯新闻首页资讯内容

1、分析站点,找规律

腾讯新闻的网址为:http://news.qq.com/ 我们打开网页看一看:

我们今天的任务是爬取首页每一条新闻的标题,先鼠标右击一条新闻的标题,选择出现的“检查”(我用的是chrome,其他浏览器可能是审查元素),出现下图的窗口:

图片中黄色框的位置就是那一条新闻标题在HTML中的结构位置:

<a target="_blank" class="linkto" href="http://news.qq.com/a/20180607/20180607A20YP5.htm">蔡英文亲信接受质询 一时紧张就暴露“卧底”身份</a>

它上一级元素为:<em class="f14 l24">,再上一级元素为:<div class="text">

我们再看另一条新闻的标题,发现它的结构和之前我们分析的新闻标题的结构是一样的:

<div class="text">

<em class="f14 l24">

<a target="_blank" class="linkto" href="http://news.qq.com/a/20180608/006430htm">特朗普称如会晤顺利可能邀请金正恩访美

</a>

</em>

</div>

有了这些信息,我们就可以确定新闻标题在HTML文档中的位置。 然后我们开始对腾讯新闻首页标题进行爬取。

2.写代码,开始爬取网页

我们先确定一下标题的详细位置,采用css selector来选取元素:

使用BeautifulSoup对响应文本wb_data进行解析处理,这里我个人比较喜欢使用是lxml库,如果没有安装,你可以使用Python自带的html.parser,其效果也是一样的。

对结果列表进行遍历的时候,先遍历,再从遍历的元素中提取出单个数据,get_text()表示获取标签的文本信息,get("href")表示获取属性名为“href”的属性值。

完整的代码如下:

import requests
from bs4 import BeautifulSoup
# 导入相关的模块
url = "http://news.qq.com/"
# 腾讯新闻的首页网址
web_data = requests.get(url) # 获取文本信息
soup = BeautifulSoup(web_data.text, "lxml")  # 对获取到的文本信息进行解析
news = soup.select("a.linkto")  # 从解析的文本中通过select选择器定位指定的元素,返回一个列表
for x in news:   # 对返回的列表进行遍历
    title = x.get_text()   # 取出标题,采用get_text()方法
    link = x.get("href")  # 取出链接,采用get("href")方法
    data = {
        '标题': title,
        '链接': link
    }
    print(data)  # 输出文章标题

3、代码输出结果

怎么样?是不是觉得自己很厉害!给自己鼓个掌先,撒个花先!

总结一下:

本例采用requests+ Beautiful的形式对腾讯新闻首页资讯标题进行

了爬取,对于小白而言这是最容易懂的爬取例子。后面随着学习的

不断深入,我们会挑战一些更有趣的,更难的例子。对了,如果你对requests和BeautifulSoup不明白或是有很强的渴望,可以查看它们的官方文档:(我这里贴一下地址)

requests官方文档(中文): http://docs.python-requests.org/zh_CN/latest/

BeautifulSoup文档(中文): https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html

本文分享自微信公众号 - 啃饼思录(kbthinking)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于JAVA你必须知道的那些事(二):封装

    时隔近一年,我突然想起来这个文章还没有发完,所以就继续开始写。也不知道自己上次写到哪里了,不管了这里从面向对象的三个特性说起。

    编程思录
  • 关于JAVA你必须知道的那些事(三):继承和访问修饰符

    今天乘着还有一些时间,把上次拖欠的面向对象编程三大特性中遗留的继承和多态给简单说明一下。这一部分还是非常重要的,需要仔细思考。

    编程思录
  • 零基础使用Django2.0.1打造在线教育网站(十八):机构详情页配置

    努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

    编程思录
  • 爬虫系列(4)深入urllib库并初步了解URLError与Cookie。

    有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作

    小Gy
  • 【LeetCode】Letter Combinations of a Phone Number

    felix
  • Apache 的架构师们遵循的 30 条设计原则

    原则1:KISS(Keep it simple,sutpid) 和保持每件事情都尽可能的简单。用最简单的解决方案来解决问题。

    lyb-geek
  • ElasticSearch源码分析之RestClient连接池

    从上面的代码示例可以看出RestClient的实例化是依赖于RestClientBuilder的build方法,也就是应用了builder模式。HttpHost...

    开发架构二三事
  • 【2020HBU天梯赛训练】7-32 最长对称子串

    对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11...

    韩旭051
  • 用弱引用堵住内存泄漏全局 Map 造成的内存泄漏找出内存泄漏HPROF 输出,显示 Map.Entry 对象的分配点弱引用WeakReference.get() 的一种可能实现用 WeakHashMa

    JavaEdge
  • String"+"拼接底层实现原理

    String:常量,不可变,不适合用来字符串拼接,每次都是新创建的对象,消耗较大。 StringBuffer:适合用来作字符串拼接 StringBuilder:...

    挨踢小子部落阁

扫码关注云+社区

领取腾讯云代金券