【python】六个常见爬虫案例【附源码】

您所在的位置:网站首页 爬虫模拟登录酷狗 【python】六个常见爬虫案例【附源码】

【python】六个常见爬虫案例【附源码】

2024-07-13 07:41:13| 来源: 网络整理| 查看: 265

        大家好,我是博主英杰,整理了几个常见的爬虫案例,分享给大家,适合小白学习

欢迎来到英杰社区icon-default.png?t=N7T8https://bbs.csdn.net/topics/617804998

一、爬取豆瓣电影排行榜Top250存储到Excel文件

        近年来,Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程序,用于抓取豆瓣电影Top250的相关信息,并将其保存为Excel文件。

获取网页数据的函数,包括以下步骤: 1. 循环10次,依次爬取不同页面的信息; 2. 使用`urllib`获取html页面; 3. 使用`BeautifulSoup`解析页面; 4. 遍历每个div标签,即每一部电影; 5. 对每个电影信息进行匹配,使用正则表达式提取需要的信息并保存到一个列表中; 6. 将每个电影信息的列表保存到总列表中。

        效果展示:

c387fe10d7d54df2b1455c8052d8f2fd.png

5c2a8e73dba34b48a2c368070ef19b50.png

        源代码: from bs4 import BeautifulSoup import re #正则表达式,进行文字匹配 import urllib.request,urllib.error #指定URL,获取网页数据 import xlwt #进行excel操作 def main(): baseurl = "https://movie.douban.com/top250?start=" datalist= getdata(baseurl) savepath = ".\\豆瓣电影top250.xls" savedata(datalist,savepath) #compile返回的是匹配到的模式对象 findLink = re.compile(r'') # 正则表达式模式的匹配,影片详情 findImgSrc = re.compile(r' ul > li > a') times = soup.select('span.pc_temp_tips_r > span') # for 循环遍历每个信息,并将其存储到字典中 for rank, title, time in zip(ranks, titles, times): data = { "rank": rank.get_text().strip(), # 歌曲排名 "singer": title.get_text().replace("\n", "").replace("\t", "").split('-')[1], # 歌手名 "song": title.get_text().replace("\n", "").replace("\t", "").split('-')[0], # 歌曲名 "time": time.get_text().strip() # 歌曲时长 } print(data) # 打印获取到的信息 if __name__ == '__main__': urls = ["https://www.kugou.com/yy/rank/home/{}-8888.html".format(str(i)) for i in range(1, 24)] # 构造要爬取的页面地址列表 for url in urls: get_info(url) # 调用函数,获取页面信息 time.sleep(1) # 控制爬虫速度,防止过快被封IP 五、爬取链家二手房数据做数据分析

        在数据分析和挖掘领域中,网络爬虫是一种常见的工具,用于从网页上收集数据。介绍如何使用 Python 编写简单的网络爬虫程序,从链家网上海二手房页面获取房屋信息,并将数据保存到 Excel 文件中。

        效果图:

        3a92a4dd5a864552934397f7918f8925.png

        代码思路:

  首先,我们定义了一个函数 fetch_data(page_number),用于获取指定页面的房屋信息数据。这个函数会构建对应页数的 URL,并发送 GET 请求获取页面内容。然后,使用 BeautifulSoup 解析页面内容,并提取每个房屋信息的相关数据,如区域、房型、关注人数、单价和总价。最终将提取的数据以字典形式存储在列表中,并返回该列表。

        接下来,我们定义了主函数 main(),该函数控制整个爬取和保存数据的流程。在主函数中,我们循环爬取前 10 页的数据,调用 fetch_data(page_number) 函数获取每一页的数据,并将数据追加到列表中。然后,将所有爬取的数据存储在 DataFrame 中,并使用 df.to_excel('lianjia_data.xlsx', index=False) 将数据保存到 Excel 文件中。

        最后,在程序的入口处,通过 if __name__ == "__main__": 来执行主函数 main()。

        源代码: import requests from bs4 import BeautifulSoup import pandas as pd # 收集单页数据 xpanx.com def fetch_data(page_number): url = f"https://sh.lianjia.com/ershoufang/pg{page_number}/" response = requests.get(url) if response.status_code != 200: print("请求失败") return [] soup = BeautifulSoup(response.text, 'html.parser') rows = [] for house_info in soup.find_all("li", {"class": "clear LOGVIEWDATA LOGCLICKDATA"}): row = {} # 使用您提供的类名来获取数据 xpanx.com row['区域'] = house_info.find("div", {"class": "positionInfo"}).get_text() if house_info.find("div", { "class": "positionInfo"}) else None row['房型'] = house_info.find("div", {"class": "houseInfo"}).get_text() if house_info.find("div", { "class": "houseInfo"}) else None row['关注'] = house_info.find("div", {"class": "followInfo"}).get_text() if house_info.find("div", { "class": "followInfo"}) else None row['单价'] = house_info.find("div", {"class": "unitPrice"}).get_text() if house_info.find("div", { "class": "unitPrice"}) else None row['总价'] = house_info.find("div", {"class": "priceInfo"}).get_text() if house_info.find("div", { "class": "priceInfo"}) else None rows.append(row) return rows # 主函数 def main(): all_data = [] for i in range(1, 11): # 爬取前10页数据作为示例 print(f"正在爬取第{i}页...") all_data += fetch_data(i) # 保存数据到Excel xpanx.com df = pd.DataFrame(all_data) df.to_excel('lianjia_data.xlsx', index=False) print("数据已保存到 'lianjia_data.xlsx'") if __name__ == "__main__": main()  六、爬取豆瓣电影排行榜TOP250存储到CSV文件中         代码思路:

        

        首先,我们导入了需要用到的三个Python模块:requests、lxml和csv。

        然后,我们定义了豆瓣电影TOP250页面的URL地址,并使用getSource(url)函数获取网页源码。

        接着,我们定义了一个getEveryItem(source)函数,它使用XPath表达式从HTML源码中提取出每部电影的标题、URL、评分和引言,并将这些信息存储到一个字典中,最后将所有电影的字典存储到一个列表中并返回。

        然后,我们定义了一个writeData(movieList)函数,它使用csv库的DictWriter类创建一个CSV写入对象,然后将电影信息列表逐行写入CSV文件。

        最后,在if __name__ == '__main__'语句块中,我们定义了一个空的电影信息列表movieList,然后循环遍历前10页豆瓣电影TOP250页面,分别抓取每一页的网页源码,并使用getEveryItem()函数解析出电影信息并存储到movieList中,最后使用writeData()函数将电影信息写入CSV文件。

        效果图:

        93a67053b142400d864a341e4a01a6f3.png

4c579a60ec81450391a989d29f54a32e.png

        源代码:

        

私信博主进入交流群,一起学习探讨,如果对CSDN周边以及有偿返现活动感兴趣: 可添加博主:Yan--yingjie 如果想免费获取图书,也可添加博主微信,每周免费送数十本 #代码首先导入了需要使用的模块:requests、lxml和csv。 import requests from lxml import etree import csv # doubanUrl = 'https://movie.douban.com/top250?start={}&filter=' # 然后定义了豆瓣电影TOP250页面的URL地址,并实现了一个函数getSource(url)来获取网页的源码。该函数发送HTTP请求,添加了请求头信息以防止被网站识别为爬虫,并通过requests.get()方法获取网页源码。 def getSource(url): # 反爬 填写headers请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' } response = requests.get(url, headers=headers) # 防止出现乱码 response.encoding = 'utf-8' # print(response.text) return response.text # 定义了一个函数getEveryItem(source)来解析每个电影的信息。首先,使用lxml库的etree模块将源码转换为HTML元素对象。然后,使用XPath表达式定位到包含电影信息的每个HTML元素。通过对每个元素进行XPath查询,提取出电影的标题、副标题、URL、评分和引言等信息。最后,将这些信息存储在一个字典中,并将所有电影的字典存储在一个列表中。 def getEveryItem(source): html_element = etree.HTML(source) movieItemList = html_element.xpath('//div[@class="info"]') # 定义一个空的列表 movieList = [] for eachMoive in movieItemList: # 创建一个字典 像列表中存储数据[{电影一},{电影二}......] movieDict = {} title = eachMoive.xpath('div[@class="hd"]/a/span[@class="title"]/text()') # 标题 otherTitle = eachMoive.xpath('div[@class="hd"]/a/span[@class="other"]/text()') # 副标题 link = eachMoive.xpath('div[@class="hd"]/a/@href')[0] # url star = eachMoive.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')[0] # 评分 quote = eachMoive.xpath('div[@class="bd"]/p[@class="quote"]/span/text()') # 引言(名句) if quote: quote = quote[0] else: quote = '' # 保存数据 movieDict['title'] = ''.join(title + otherTitle) movieDict['url'] = link movieDict['star'] = star movieDict['quote'] = quote movieList.append(movieDict) print(movieList) return movieList # 保存数据 def writeData(movieList): with open('douban.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.DictWriter(f, fieldnames=['title', 'star', 'quote', 'url']) writer.writeheader() # 写入表头 for each in movieList: writer.writerow(each) if __name__ == '__main__': movieList = [] # 一共有10页 for i in range(10): pageLink = doubanUrl.format(i * 25) source = getSource(pageLink) movieList += getEveryItem(source) writeData(movieList)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭