本文介绍了7个Python爬虫小案例,包括爬取豆瓣电影Top250、猫眼电影Top100、全国高校名单、中国天气网、当当网图书、糗事百科段子和新浪微博信息,帮助读者理解并实践Python爬虫基础知识。
在文章开始之前先给大家简单介绍一下python爬虫

一、什么是爬虫?

1.简单介绍爬虫

爬虫的全称为网络爬虫,简称爬虫,别名有网络机器人,网络蜘蛛等等。
网络爬虫是一种自动获取网页内容的程序,为搜索引擎提供了重要的数据支撑。搜索引擎通过网络爬虫技术,将互联网中丰富的网页信息保存到本地,形成镜像备份。我们熟悉的谷歌、百度本质上也可理解为一种爬虫。
如果形象地理解,爬虫就如同一只机器蜘蛛,它的基本操作就是模拟人的行为去各个网站抓取数据或返回数据。

2.爬虫的工作原理

下图是一个网络爬虫的基本框架:

二、python爬虫能干什么?

python爬虫就是模拟浏览器打开网页,获取网页中想要的那部分数据。利用爬虫我们可以抓取商品信息、评论及销量数据;可以抓取房产买卖及租售信息;可以抓取各类职位信息等。
利用爬虫我们可以获取大量的价值数据,从而获得感性认识中不能得到的信息,比如:爬取知乎优质答案,为你筛选出各话题下最优质的内容。抓取淘宝、京东商品、评论及销量数据,对各种商品及用户的消费场景进行分析。
抓取房产买卖及租售信息,分析房价变化趋势、做不同区域的房价分析。爬取各类职位信息,分析各行业人才需求情况及薪资水平。爬虫的本质:爬虫的本质就是模拟浏览器打开网页,获取网页中我们想要的那部分数据。
三、Python7个爬虫小案例
下面我将分享7个Python爬虫的小案例,帮助大家更好地学习和了解Python爬虫的基础知识。以下是每个案例的简介和源代码:

1. 爬取豆瓣电影Top250

这个案例使用BeautifulSoup库爬取豆瓣电影Top250的电影名称、评分和评价人数等信息,并将这些信息保存到CSV文件中。

import requestsfrom bs4 import BeautifulSoupimport csv
# 请求URLurl ='<https://movie.douban.com/top250>'# 请求头部headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
# 解析页面函数defparse_html(html):soup = BeautifulSoup(html,'l ')movie_list = soup.find('ol',class_='grid_view').find_all('li')formovieinmovie_list: = movie.find('div',class_='hd').find('span',class_=' ').get_text()rating_num = movie.find('div',class_='star').find('span',class_='rating_num').get_text()comment_num = movie.find('div',class_='star').find_all('span')[-1].get_text()writer.writerow([ , rating_num, comment_num])
# 保存数据函数defsave_data():f = open('douban_movie_top250.csv','a', newline='', encoding='utf-8-sig')global writerwriter = csv.writer(f)writer.writerow(['电影名称','评分','评价人数'])foriinrange(10):url ='<https://movie.douban.com/top250?start=>'+ str(i*25) +'&filter='response = requests.get(url, headers=headers)parse_html(response.text)f.close()
if__name__=='__main__':save_data()


2. 爬取猫眼电影Top100

这个案例使用正则表达式和requests库爬取猫眼电影Top100的电影名称、主演和上映时间等信息,并将这些信息保存到TXT文件中。

importrequestsimportre
# 请求URLurl ='<https://maoyan.com/board/4>'# 请求头部headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
# 解析页面函数defparse_html(html):pattern = re.compile('<p class="name"><a href=".*?" ="(.*?)" >(.*?)</a></p>.*?<p class="star">(.*?)</p>.*?<p class="releasetime">(.*?)</p>', re.S)items = re.findall(pattern, html)foriteminitems:yield{'电影名称': item[1],'主演': item[2].strip(),'上映时间': item[3]}
# 保存数据函数defsave_data():f = open('maoyan_top100.txt','w', encoding='utf-8')foriinrange(10):url ='<https://maoyan.com/board/4?offset=>'+ str(i*10)response = requests.get(url, headers=headers)foriteminparse_html(response.text):f.write(str(item) +'\\\\n')f.close()
if__name__ =='__main__':save_data()


3. 爬取全国高校名单

这个案例使用正则表达式和requests库爬取全国高校名单,并将这些信息保存到TXT文件中。

importrequestsimportre
# 请求URLurl ='<http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html>'# 请求头部headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
# 解析页面函数defparse_html(html):pattern = re.compile('<tr class="alt">.*?<td>(.*?)</td>.*?<td><div align="left">.*?<a href="(.*?)" target="_blank">(.*?)</a></div></td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?</tr>', re.S)items = re.findall(pattern, html)foriteminitems:yield{'排名': item[0],'学校名称': item[2],'省市': item[3],'总分': item[4]}
# 保存数据函数defsave_data():f = open('university_top100.txt','w', encoding='utf-8')response = requests.get(url, headers=headers)foriteminparse_html(response.text):f.write(str(item) +'\\\\n')f.close()
if__name__ =='__main__':save_data()


4. 爬取中国天气网城市天气

这个案例使用xpath和requests库爬取中国天气网的城市天气,并将这些信息保存到CSV文件中。

4.爬取中国天气网城市天气这个案例使用xpath和requests库爬取中国天气网的城市天气,并将这些信息保存到CSV文件中。

5. 爬取当当网图书信息

这个案例使用xpath和requests库爬取当当网图书信息,并将这些信息保存到CSV文件中。

importrequestsfroml importetreeimportcsv
# 请求URLurl ='<http://search.dangdang.com/?key=Python&act=input>'# 请求头部headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
# 解析页面函数defparse_html(html):selector = etree.HTML(html)book_list = selector.xpath('//*[@id="search_nature_rg"]/ul/li')forbookinbook_list: = book.xpath('a/@ ')[0] = book.xpath('a/@href')[0]price = book.xpath('p[@class="price"]/span[@class="search_now_price"]/text()')[0]author = book.xpath('p[@class="search_book_author"]/span[1]/a/@ ')[0]publish_date = book.xpath('p[@class="search_book_author"]/span[2]/text()')[0]publisher = book.xpath('p[@class="search_book_author"]/span[3]/a/@ ')[0]yield{'书名': ,'链接': ,'价格': price,'作者': author,'出版日期': publish_date,'出版社': publisher}
# 保存数据函数defsave_data():f = open('dangdang_books.csv','w', newline='', encoding='utf-8-sig')writer = csv.writer(f)writer.writerow(['书名','链接','价格','作者','出版日期','出版社'])response = requests.get(url, headers=headers)foriteminparse_html(response.text):writer.writerow(item.values())f.close()
if__name__ =='__main__':save_data()


6. 爬取糗事百科段子

这个案例使用xpath和requests库爬取糗事百科的段子,并将这些信息保存到TXT文件中。

importrequestsfroml importetree
# 请求URLurl ='<https://www.qiushibaike.com/text/>'# 请求头部headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
# 解析页面函数defparse_html(html):selector = etree.HTML(html)content_list = selector.xpath('//div[@class="content"]/span/text()')forcontentincontent_list:yieldcontent
# 保存数据函数defsave_data():f = open('qiushibaike_jokes.txt','w', encoding='utf-8')foriinrange(3):url ='<https://www.qiushibaike.com/text/page/>'+ str(i+1) +'/'response = requests.get(url, headers=headers)forcontentinparse_html(response.text):f.write(content +'\\\\n')f.close()
if__name__ =='__main__':save_data()


7. 爬取新浪微博

这个案例使用selenium和requests库爬取新浪微博,并将这些信息保存到TXT文件中。

importtimefromseleniumimportwebdriverimportrequests
# 请求URLurl ='<https://weibo.com/>'# 请求头部headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
# 解析页面函数defparse_html(html):print(html)
# 保存数据函数defsave_data():f = open('weibo.txt','w', encoding='utf-8')browser = webdriver.Chrome()browser.get(url)time.sleep(10)browser.find_element_by_name('username').send_keys('username')browser.find_element_by_name('password').send_keys('password')browser.find_element_by_class_name('W_btn_a').click()time.sleep(10)response = requests.get(url, headers=headers, cookies=browser.get_cookies())parse_html(response.text)browser.close()f.close()
if__name__ =='__main__':save_data()


希望这7个小案例能够帮助大家更好地掌握Python爬虫的基础知识!

收藏 打印