分享Python7个爬虫小案例(附源码) 您所在的位置:网站首页 用python爬取豆瓣电影排行榜 分享Python7个爬虫小案例(附源码)

分享Python7个爬虫小案例(附源码)

2023-04-20 16:48| 来源: 网络整理| 查看: 265

本次的7个python爬虫小案例涉及到了re正则、xpath、beautiful soup、selenium等知识点,非常适合刚入门python爬虫的小伙伴参考学习。注:若涉及到版权或隐私问题,请及时联系我删除即可。

1.使用正则表达式和文件操作爬取并保存“某吧”某帖子全部内容(该帖不少于5页。 本次选取的是某吧中的NBA吧中的一篇帖子,帖子标题是“克莱和哈登,谁历史地位更高”。爬取的目标是帖子里面的回复内容。

源程序和关键结果截图:

import csvimport requestsimport reimport time

def main(page): url = f'https://tieba.baidu.com/p/7882177660?pn={page}' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' } resp = requests.get(url,headers=headers) html = resp.text # 评论内容 comments = re.findall('style="display:;"> (.*?)',html) # 评论用户 users = re.findall('class="p_author_name j_user_card" href=".*?" target="_blank">(.*?)',html) # 评论时间 comment_times = re.findall('楼(.*?)宇宙职业选手最新章节!','') print(title,content) cursor.execute(sql,[novel_name,title,content]) # 插入数据 conn.commit() # 提交事务保存数据 except: pass finally: sleep(2) close_conn(conn, cursor) # 关闭数据库

if __name__ == '__main__': # 获取小说名字,标题链接,章节名称 title_list, link_list, novel_name = get_chapters('https://www.qb5.tw/book_116659/') with ThreadPoolExecutor(5) as t: # 创建5个线程 for title,link in zip(title_list,link_list): t.submit(get_content, novel_name,title,link) # 启动线程

3. 分别使用XPath和Beautiful Soup4两种方式爬取并保存非异步加载的“某瓣某排行榜”如https://movie.douban.com/top250的名称、描述、评分和评价人数等数据。

先分析:

首先,来到某瓣Top250页面,首先使用Xpath版本的来抓取数据,先分析下电影列表页的数据结构,发下都在网页源代码中,属于静态数据

接着我们找到数据的规律,使用xpath提取每一个电影的链接及电影名

然后根据链接进入到其详情页

分析详情页的数据,发现也是静态数据,继续使用xpath提取数据

最后我们将爬取的数据进行存储,这里用csv文件进行存储

接着是Beautiful Soup4版的,在这里,我们直接在电影列表页使用bs4中的etree进行数据提取

最后,同样使用csv文件进行数据存储

源代码即结果截图:

XPath版:

import refrom time import sleepimport requestsfrom lxml import etreeimport randomimport csv

def main(page,f): url = f'https://movie.douban.com/top250?start={page*25}&filter=' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.35 Safari/537.36',} resp = requests.get(url,headers=headers) tree = etree.HTML(resp.text) # 获取详情页的链接列表 href_list = tree.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[1]/a/@href') # 获取电影名称列表 name_list = tree.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()') for url,name in zip(href_list,name_list): f.flush() # 刷新文件 try: get_info(url,name) # 获取详情页的信息 except: pass sleep(1 + random.random()) # 休息 print(f'第{i+1}页爬取完毕')

def get_info(url,name): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.35 Safari/537.36', 'Host': 'movie.douban.com', } resp = requests.get(url,headers=headers) html = resp.text tree = etree.HTML(html) # 导演 dir = tree.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')[0] # 电影类型 type_ = re.findall(r'property="v:genre">(.*?)',html) type_ = '/'.join(type_) # 国家 country = re.findall(r'地区: (.*?)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有