博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬取校园新闻首页的新闻
阅读量:4310 次
发布时间:2019-06-06

本文共 2891 字,大约阅读时间需要 9 分钟。

1. 用requests库和BeautifulSoup库,爬取校园新闻首页新闻的标题、链接、正文。

import requests  from bs4 import BeautifulSoup  url = requests.get("http://news.gzcc.cn/html/xiaoyuanxinwen/")  url.encoding = "utf-8"soup = BeautifulSoup(url.text,'html.parser') #print(soup.head.title.text)for news in soup.select('li'):   if len(news.select('.news-list-title'))>0:        #print(news.select('.news-list-title'))                          #print(news.select('.news-list-title')[0])            #print(news.select('.news-list-title')[0].text)   time = news.select('.news-list-info')[0].contents[0].text         title = news.select('.news-list-title')[0].text                  href = news.select('a')[0]['href']                           href_text = requests.get(href)                                     href_text.encoding = "utf-8"         href_soup = BeautifulSoup(href_text.text,'html.parser')         href_text_body = href_soup.select('.show-content')[0].text      print(time,title,href,href_text_body)

  2. 分析字符串,获取每篇新闻的发布时间,作者,来源,摄影等信息。

# print(news)def analyseNewsArticle(href):    print('**' * 5 + '详情页信息' + '**' * 10)    res1 = requests.get(href)    res1.encoding = 'UTF-8'    soup1 = BeautifulSoup(res1.text, 'html.parser')    news_info = soup1.select('.show-info')[0].text    info_list = ['来源', '发布时间', '点击', '作者', '审核', '摄影']  # 需要解析的字段    news_info_set = set(news_info.split('\xa0')) - {' ', ''}  # 网页中的 获取后会解析成\xa0,所以可以使用\xa0作为分隔符    # 循环打印文章信息    for n_i in news_info_set:        for info_flag in info_list:            if n_i.find(info_flag) != -1:  # 因为时间的冒号采用了英文符所以要进行判断                if info_flag == '发布时间':                    print(info_flag + ':' + n_i[n_i.index(':') + 1:])                elif info_flag == '点击':  # 点击次数是通过文章id访问php后使用js写入,所以这里单独处理                    click_num_url = 'http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80'                    res2 = requests.get(click_num_url.format(href[href.rindex('/') + 1:href.index('.html')]))                    res2.encoding = 'UTF-8'                    print(info_flag + ':' + res2.text[res2.text.rindex("('") + 2:res2.text.rindex("')")])                else:                    print(info_flag + ':' + n_i[n_i.index(':') + 1:])    news_content = soup1.select('#content')[0].text    print(news_content)  # 文章内容    print('————' * 40)for n in news:    # print(n)    print('**' * 5 + '列表页信息' + '**' * 10)    print('新闻链接:' + n.a.attrs['href'])    print('新闻标题:' + n.select('.news-list-title')[0].text)    print('新闻描述:' + n.a.select('.news-list-description')[0].text)    print('新闻时间:' + n.a.select('.news-list-info > span')[0].text)    print('新闻来源:' + n.a.select('.news-list-info > span')[1].text)    analyseNewsArticle(n.a.attrs['href'])

3. 将其中的发布时间由str转换成datetime类型。

form datetime import datetime, timedelta  import time start_date = datetime.strptime("2018-04-03", "%Y-%m-%d")

  4. 将完整的代码及运行结果截图发布在作业上。

 

转载于:https://www.cnblogs.com/tyx123/p/8710871.html

你可能感兴趣的文章
HDU 5317 RGCDQ (数论素筛)
查看>>
学习JSP(一)
查看>>
node安装-Win+Linux+Mac osx
查看>>
cookie和session笔记
查看>>
Java中使用注释
查看>>
构建你的第一个App
查看>>
Network Mapper 嗅探工具
查看>>
linux下定时执行任务的方法
查看>>
ASP.NET MVC 常用内置验证特性 简介
查看>>
tuple有无list对key的影响
查看>>
java study3
查看>>
优秀的后台管理界面设计案例分享
查看>>
在VIM中使用GDB调试 – 使用vimgdb
查看>>
数据挖掘中哪些算法使用率较高?
查看>>
编程算法 - 推断二叉树是不是平衡树 代码(C)
查看>>
MySpring dataSource从配置文件获取
查看>>
矩阵的转置
查看>>
如何为SharePoint文档库、文件夹、文件单独设置权限
查看>>
【Linux】linux中很有用的指令(练习)
查看>>
C# 抽象(2)
查看>>