python爬虫实践(腾讯新闻)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/d345389812/article/details/81910156

作为数据分析师的我们,数据来源很重要,其中爬虫是我们获取数据的一个手段。那么爬虫是什么呢?

爬虫在百度百科的解释,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,简单点说就是一段帮我们抓取数据的代码。

那么在爬取数据之前,我们需要懂得一些前端的知识,那样有助于我们快速有效的爬取目标数据,在这里小文也就不细说了(只懂得皮毛。。),直接上案例。

#requests + BeautifulSoup
import pandas as pd
import requests
from bs4 import BeautifulSoup

#下载网页
url='http://news.qq.com/'
res = requests.get(url).text
print(res)

从上图我们看到网页已经成功下载了,并且看到目标数据就在下图所示位置。接下来利用BeautifulSoup解析网页。

#解析网页,抓取目标内容
soup = BeautifulSoup(res,'lxml')
news = soup.find_all('a',{'class':'linkto'})
print(news)

如上图所示,我们已经把目标数据所在行抓取出来放到news列表里了。

#遍历,将数据存在字典里
for n in news:
    title=n.get_text()
    link=n.get("href")
    data = {'标题':title,'链接':link}
    print(data)

OK,到这里目标数据已抓取成功!但是,有一个问题,数据都各自在一个字典里,不利于后期的导出。那能不能将其放到一个数据框里呢?

#将数据存在一个数据框里
title = []
link = []
for i in range(len(news)):
    title.append(news[i].get_text())
    link.append(news[i].get('href'))
data = pd.DataFrame({'标题':title,'链接':link})
data.head()

这里要注意,title要先定义,不然title.append()会报错。因为小文要将数据存在列表里,所以就先将其定义为列表了,结果如下:

#完整代码
title = []
link = []
url='http://news.qq.com/'
res = requests.get(url).text
soup = BeautifulSoup(res,'lxml')
news= soup.find_all('a',{'class':'linkto'})
for i in range(len(news)):
    title.append(news[i].get_text())
    link.append(news[i].get('href'))
    
data = pd.DataFrame({'标题':title,'链接':link})
data.to_csv('news.csv')

OK,今天这个小小的爬虫实例就到此结束,非常欢迎各路大神指点指点!

猜你喜欢

转载自blog.csdn.net/d345389812/article/details/81910156