前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫练习-百度新闻

爬虫练习-百度新闻

作者头像
zx钟
发布2019-07-19 16:19:34
4060
发布2019-07-19 16:19:34
举报
文章被收录于专栏:测试游记测试游记

今天爬一下百度新闻的新闻标题

1.首先分析页面

进入百度新闻百度新闻首页:http://news.baidu.com/

在搜索栏输入需要搜索的内容例如:浙江大学城市学院

再选择搜索的内容为新闻标题点击搜索后页面跳转到以下url:

http://news.baidu.com/ns?word=浙江大学城市学&tn=newstitle&from=news&cl=2&rn=20&ct=0

点击下第二页发现url中增加了pn=20

http://news.baidu.com/ns?word=浙江大学城市学&pn=20&tn=newstitle&from=news&cl=2&rn=20&ct=0

点击第三页发现pn=40:

http://news.baidu.com/ns?word=浙江大学城市学&pn=20&tn=newstitle&from=news&cl=2&rn=20&ct=0

合理的推断出页数+1pn+20

2.然后开始分析页面内容

找出比较重要的几个信息新闻标题新闻来源新闻时间

以第一条新闻为例,使用浏览器自带的开发者工具(F12)找到其源码中的位置

发现内容写在一个class="result title"的div里面

代码语言:javascript
复制
<div class="result title" id="1">•&nbsp;
    <h3 class="c-title">
        <a href="http://www.eol.cn/zhejiang/zhejiang_news/201802/t20180206_1584845.shtml" 
data-click="{
      'f0':'77A717EA',
      'f1':'9F73F1E4',
      'f2':'4CA6DE6E',
      'f3':'54E5343F',
      't':'1521382768'
      }" target="_blank">
    <em>浙江大学城市学院</em>2018年“三位一体”综合评价招生章程</a>
        </h3><div class="c-title-author">中国教育在线&nbsp;&nbsp;2018年02月06日 23:26</div></div>

3.开始代码实现

通过request模块模拟http访问,lxml进行xpath解析

代码语言:javascript
复制
from lxml import etree
import requests
import json

首先写一个获取页面信息的函数:

代码语言:javascript
复制
def get_news(url):
    item = {}
    #获取页面源码
    res = requests.get(url).text 
    html = etree.HTML(res) 
    #将class="result title"的内容存储成一个列表对象
    nodes = html.xpath('//*[@class="result title"]') 
    #遍历对象并取出对象下面的文字内容text()
    for node in nodes:
        item['titles'] = ''.join(node.xpath('./h3/a/text()|./h3/a/em/text()'))
        item['author'] = node.xpath('./*[@class="c-title-author"]/text()')[].split('\xa0\xa0')[]
        item['time'] = node.xpath('./*[@class="c-title-author"]/text()')[].split('\xa0\xa0')[]
        write_data(item)#将内容写入文件

将内容写入文件

代码语言:javascript
复制
def write_data(item):
    data = json.dumps(item,ensure_ascii=False) + '\n'
    with open('new.json','a',encoding='utf-8') as f:
        f.write(data)

主函数:

代码语言:javascript
复制
if __name__ == '__main__':
    word = input('请输入关键字:')
    pages = input('查看的页数:')
    for page in range(,int(pages)+):
        print('正在爬取百度新闻中关于「%s」的第「%d」页内容。。。'%(word,page))
        page = (page-1)*
        url='http://news.baidu.com/ns?word=%s&pn=%d&cl=2&ct=1&tn=newstitle&rn=20&ie=utf-8&bt=0&et=0' % (word,page)
        get_news(url)

以上就完成了一个输入关键字并将内容写入json文件的爬虫

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档