爬取校园新闻

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

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

3. 将字符串格式的发布时间转换成datetime类型

4. 使用正则表达式取得新闻编号

5. 生成点击次数的Request URL

6. 获取点击次数

7. 将456步骤定义成一个函数 def getClickCount(newsUrl):

8. 将获取新闻详情的代码定义成一个函数 def getNewDetail(newsUrl):

9. 尝试用使用正则表达式分析show info字符串,点击次数字符串。

import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re
res = requests.get(‘http://news.gzcc.cn/html/xiaoyuanxinwen/‘)
res.encoding = ‘utf-8‘
soup = BeautifulSoup(res.text, ‘html.parser‘)

# 获取新闻点击次数
def getNewsId(url):
    newsId = re.findall(r‘\_(.*).html‘, newsUrl)[0][-4:]
    clickUrl = ‘http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80‘.format(newsId)
    clickRes = requests.get(clickUrl)
    # 利用正则表达式获取新闻点击次数
    clickCount = int(re.search("hits‘\).html\(‘(.*)‘\);", clickRes.text).group(1))
    return clickCount

# 获取新闻细节
def getNewsDetail(newsUrl):
    resd = requests.get(newsUrl)
    resd.encoding = ‘utf-8‘
    soupd = BeautifulSoup(resd.text, ‘html.parser‘)

    content = soupd.select(‘#content‘)[0].text
    info = soupd.select(‘.show-info‘)[0].text
    # 调用getNewsId()获取点击次数
    count = getNewsId(newsUrl)

    date = re.match(‘发布时间:(.*)      作者:‘, info).group(1)
    author = re.search(‘作者:(.*)  审核:‘, info).group(1)
    check = re.search(‘审核:(.*)  来源:‘, info).group(1)
    sources = re.search(‘来源:(.*)    摄影:‘, info).group(1)
    # 用datetime将时间字符串转换为datetime类型
    dateTime = datetime.strptime(date, ‘%Y-%m-%d %H:%M:%S‘)
    # 利用format对字符串进行操作
    print(‘发布时间:{0}\n作者:{1}\n审核:{2}\n来源:{3}\n点击次数:{4}‘.format(dateTime, author, check, sources, count))
    print(content)

for new in soup.select(‘li‘):
    if len(new.select(‘.news-list-title‘)) > 0:
        title = new.select(‘.news-list-title‘)[0].text
        description = new.select(‘.news-list-description‘)[0].text
        newsUrl = new.select(‘a‘)[0][‘href‘]
        # 调用getNewsDetail()获取新闻详情
        getNewsDetail(newsUrl)
        print(‘标题:{0}\n内容:{1}\n链接:{2}‘.format(title, description, newsUrl))
        break

结果:

原文地址:https://www.cnblogs.com/171-LAN/p/8719282.html

时间: 2024-07-31 13:20:39

爬取校园新闻的相关文章

爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离

1. 用requests库和BeautifulSoup库,爬取校园新闻首页新闻的标题.链接.正文.show-info. 2. 分析info字符串,获取每篇新闻的发布时间,作者,来源,摄影等信息. 3. 将字符串格式的发布时间转换成datetime类型 4. 使用正则表达式取得新闻编号 5. 生成点击次数的Request URL 6. 获取点击次数 7. 将456步骤定义成一个函数 def getClickCount(newsUrl): 8. 将获取新闻详情的代码定义成一个函数 def getNe

爬取校园新闻首页的新闻

import requests from bs4 import BeautifulSoup from datetime import datetime url="http://news.gzcc.cn/html/xiaoyuanxinwen/" res=requests.get(url) res.encoding="utf-8" soup=BeautifulSoup(res.text,"html.parser") for news in soup

第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

第三百三十四节,web爬虫讲解2-Scrapy框架爬虫-Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻标题和rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息,那么这种一般都是 js 的 Ajax 动态请求生成的信息 我们以百度新闻为列: 1.分析网站 首先我们浏览器打开百度新闻,在网页中间部分找一条新闻信息 然后查看源码,看看在源码里是否有

爬取网易新闻排行榜

#网络爬虫之最基本的爬虫:爬取[网易新闻排行榜](http://news.163.com/rank/) **一些说明:** * 使用urllib2或requests包来爬取页面. * 使用正则表达式分析一级页面,使用Xpath来分析二级页面. * 将得到的标题和链接,保存为本地文件. import os import sys import requests import re from lxml import etree def StringListSave(save_path, filenam

web爬虫讲解—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息

crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息,那么这种一般都是 js 的 Ajax 动态请求生成的信息 我们以百度新闻为列: 1.分析网站 首先我们浏览器打开百度新闻,在网页中间部分找一条新闻信息 然后查看源码,看看在源码里是否有这条新闻,可以看到源文件里没有这条信息,这种情况爬虫是无法爬取到信息的 那么我们就需要抓包分析了,启动抓包软件和抓包

Python爬虫实战教程:爬取网易新闻;爬虫精选 高手技巧

前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. stars声明很多小伙伴学习Python过程中会遇到各种烦恼问题解决不了.为此小编建了个群 624440745. 不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步! 此文属于入门级级别的爬虫,老司机们就不用看了. 本次主要是爬取网易新闻,包括新闻标题.作者.来源.发布时间.新闻正文. 首先我们打开163的网站,我们随意选择一个分类,这里我选

scrapy爬取网易新闻内容

最近在写毕业论文,是做个文本分类相关的题目.想抓取网易新闻里那些新闻内容作为分析的数据,于是就又照着scrapy的文档照做了一遍... 感觉主要就只是两个文件items.py和spiders文件夹下的爬取规则的文件,我这里爬取技术类文档的直接叫tech.py了 scrapy的入门教程已经写的很详细了,大家可以先看看.地址为http://scrapy-chs.readthedocs.org/zh_CN/0.24/intro/tutorial.html 下面是我做的情况 1.创建项目    运行命令

爬取工大新闻并发送到邮箱中

1 #coding:utf-8 2 import requests 3 from pyquery import PyQuery as pq 4 import urllib2, json,sys,smtplib 5 from email.mime.text import MIMEText 6 7 reload(sys) 8 sys.setdefaultencoding('utf-8')#避免中文编码问题 9 10 11 mailto_list=["[email protected]"]

java网络爬虫爬取百度新闻

采用commons-httpclient commons-httpclient是一个遗留版本,现在官方已经不推荐使用了. lucene采用4.3版本 所需jar包 package com.lulei.util; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream;