用requests库和BeautifulSoup4库爬取新闻列表

Posted 43张正杰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用requests库和BeautifulSoup4库爬取新闻列表相关的知识,希望对你有一定的参考价值。

1、用requests库和BeautifulSoup4库,爬取校园新闻列表的时间、标题、链接、来源、详细内容。

要求:(1)将其中的时间str转换成datetime类型。(2)将取得详细内容的代码包装成函数。

 1 import requests
 2 from bs4 import BeautifulSoup
 3 from datetime import datetime
 4 
 5 webs="http://news.gzcc.cn/html/xiaoyuanxinwen/"
 6 res=requests.get(webs)
 7 res.encoding=\'utf-8\'  #编码转换,避免中文乱码输出
 8 soup=BeautifulSoup(res.text,"html.parser")  #html.parser是指定解析器
 9 
10 #下面函数是输出新闻的详细内容
11 def getdetail(url):
12     resd=requests.get(url)
13     resd.encoding=\'utf-8\'
14     soupd=BeautifulSoup(resd.text,\'html.parser\')
15     return (soupd.select(\'.show-content\')[0].text)
16 
17 #下面函数是输出新闻的时间,类型为datetime
18 def gettime(url):
19     resd=requests.get(url)
20     resd.encoding=\'utf-8\'
21     soupd=BeautifulSoup(resd.text,\'html.parser\')
22     tx1=soupd.select(\'.show-info\')[0].text
23     tx2="{0:.24}".format(tx1[5:24])
24     time=datetime.strptime(tx2,\'%Y-%m-%d %H:%M:%S\') #把字符串类型转换成时间类型
25     return (time)
26 
27 for news in soup.select(\'li\'):
28     if len(news.select(\'.news-list-title\'))>0:
29         #如果存在新闻列表标题的话(有内容则会大于0)
30         title=(news.select(\'.news-list-title\')[0].text)
31         #输出标题的内容
32         url=news.select(\'a\')[0][\'href\']
33         #输出a标签中的href内容(即网址)
34         
35         time=gettime(url)
36         #用列表列出子标签后取出第一个元素的内容(时间)
37         sorce=(news.select(\'.news-list-info\')[0].contents[1].text)
38         #用列表列出子标签后取出第二个元素的内容(来源)
39         detail=getdetail(url)
40         #输出详细内容
41         print(time,sorce,title,\'\\n\',url,\'\\n\',detail)
42         #输出新闻时间、来源、标题、链接、和内容

 

2、一个自己感兴趣的主题,做类似的操作,为后面“爬取网络数据并进行文本分析”做准备。

 1 import requests
 2 from bs4 import BeautifulSoup
 3 
 4 mt="http://gz.meituan.com/shop/2380968"
 5 res=requests.get(mt)
 6 res.encoding=\'utf-8\'
 7 soup=BeautifulSoup(res.text,"html.parser")
 8 
 9 for news in soup.select(\'li\'):
10     if len(news.select(\'.title\'))>0:
11         titles=(news.select(\'.title\'))
12      
13         print(titles)

 

以上是关于用requests库和BeautifulSoup4库爬取新闻列表的主要内容,如果未能解决你的问题,请参考以下文章

用requests库和BeautifulSoup4库爬取新闻列表

用requests库和BeautifulSoup4库爬取新闻列表

用requests库和BeautifulSoup4库爬取新闻列表

用requests库和BeautifulSoup4库爬取新闻列表

用requests库和BeautifulSoup4库爬取新闻列表

用requests库和BeautifulSoup4库爬取新闻列表