【作业】用requests库和BeautifulSoup4库爬取新闻列表
1、用requests库和BeautifulSoup4库,爬取校园新闻列表的时间、标题、链接、来源、详细内容。
要求:(1)将其中的时间str转换成datetime类型。(2)将取得详细内容的代码包装成函数。
1 #广州商学院新闻爬虫 2 import requests 3 from bs4 import BeautifulSoup 4 from datetime import datetime 5 6 webs="http://news.gzcc.cn/html/xiaoyuanxinwen/" 7 res=requests.get(webs) 8 res.encoding='utf-8' #编码转换,避免中文乱码输出 9 soup=BeautifulSoup(res.text,"html.parser") #html.parser是指定解析器 10 11 #下面函数是输出新闻的详细内容 12 def getdetail(url): 13 resd=requests.get(url) 14 resd.encoding='utf-8' 15 soupd=BeautifulSoup(resd.text,'html.parser') 16 return (soupd.select('.show-content')[0].text) 17 18 #下面函数是输出新闻的时间,类型为datetime 19 def gettime(url): 20 resd=requests.get(url) 21 resd.encoding='utf-8' 22 soupd=BeautifulSoup(resd.text,'html.parser') 23 tx1=soupd.select('.show-info')[0].text 24 tx2="{0:.24}".format(tx1[5:24]) 25 time=datetime.strptime(tx2,'%Y-%m-%d %H:%M:%S') #把字符串类型转换成时间类型 26 return (time) 27 28 for news in soup.select('li'): 29 if len(news.select('.news-list-title'))>0: 30 #如果存在新闻列表标题的话(有内容则会大于0) 31 title=(news.select('.news-list-title')[0].text) 32 #输出标题的内容 33 url=news.select('a')[0]['href'] 34 #输出a标签中的href内容(即网址) 35 36 time=gettime(url) 37 #用列表列出子标签后取出第一个元素的内容(时间) 38 sorce=(news.select('.news-list-info')[0].contents[1].text) 39 #用列表列出子标签后取出第二个元素的内容(来源) 40 detail=getdetail(url) 41 #输出详细内容 42 print(time,sorce,title,'\n',url,'\n',detail) 43 #输出新闻时间、来源、标题、链接、和内容
2、一个自己感兴趣的主题,做类似的操作,为后面“爬取网络数据并进行文本分析”做准备。
1 import requests 2 from bs4 import BeautifulSoup 3 4 webs="http://geek.csdn.net/cloud" 5 res=requests.get(webs) 6 res.encoding='utf-8' 7 soup=BeautifulSoup(res.text,"html.parser") 8 for news in soup.select('span'): 9 if len(news.select('.title'))>0: 10 title=(news.select('.title')[0].text) 11 url=news.select('.title')[0]['href'] 12 print(title,'\n',url)