python爬虫小案例 ✦ 爬取豆瓣电影Top250

此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。

前言

项目案例目标:练习爬虫技术,获取高评分电影。

这个是我的第一篇爬虫博客。该案例特简单,爬取 豆瓣电影top250。(20190724

结合视频食用,味道更佳! 【Python爬虫】Python爬虫入门,看这个就够了!!!


1. 请求网页

先请个首页、第二页、尾页看看,记录 URL

  • 首页

python爬虫小案例 ✦ 爬取豆瓣电影Top250_第1张图片

  • 第二页

python爬虫小案例 ✦ 爬取豆瓣电影Top250_第2张图片

  • 尾页

python爬虫小案例 ✦ 爬取豆瓣电影Top250_第3张图片
URL 记录如下:

https://movie.douban.com/top250?start=0&filter=			#第1页
https://movie.douban.com/top250?start=25&filter=		#第2页
...
...
https://movie.douban.com/top250?start=225&filter=		#第10页

通过观察URL可以发现,URL的变化点就在 start= 这里,每一页递增25,清楚了URL的规律后,接下来就可以请求网页进行分析了。

# 请求url,因为一页有25个电影,共10页。这里用一个for函数去10个数字
for count in range(10):
    url = f'https://movie.douban.com/top250?start={count*25}&filter='
    response = requests.get(url).text

查看获取到response,也就是网页源代码,这里我们主要爬取画圈圈的四个点。用到的是正则表达式进行数据的提取。

python爬虫小案例 ✦ 爬取豆瓣电影Top250_第4张图片


2. 完整代码

现在回看,这个代码跟 dogshit 差不多,懒得改了。(20201003,

建议看后来写的东西吧!会较为清晰!!!
建议看后来写的东西吧!会较为清晰!!!
建议看后来写的东西吧!会较为清晰!!!

点击直达:【Python爬虫】Python爬虫入门,看这个就够了!!!
点击直达:【Python爬虫】Python爬虫入门,看这个就够了!!!

# 导入模块
import re
import requests

headers = {
     
    'User-Agent':'Mozilla/5.0'
}

# 请求url,因为一页有25个电影,共10页。这里用一个for函数取10个数字
for i in range(10):
    url = 'https://movie.douban.com/top250?start=%s&filter=' % (i * 25)

    # 网页响应,requests.get表示请求获取网页,text一般用于返回的文本
    response = requests.get(url,headers=headers).text

    # 解析网页,在请求网页成功后,就需要解析网页了。
    # 这里用到了正则表达式,有不清楚的欢迎在下方留言或指正我的错误。
    pattern = re.compile('
  • .*?(.*?).*?' '(.*?).*?<.*?"v:average">(.*?).*?(.*?)' '人评价.*?(.*?).*?',re.S) # 给解析后的网页文本定义一个变量 items = re.findall(pattern, response) # 遍历items,打印对应的内容 for item in items: print("ID:",item[0], "title:", item[1], "score:", item[2], "count:", item[3], "comment:", item[4])
  • 3. 多线程代码

    
    # 导入模块
    import re
    import csv
    import time
    import json
    import requests
    from threading import Thread
    
    
    class Douban_Spider(object):
    
        def __init__(self):
            self.headers = {
         
                'User-Agent':'Mozilla/5.0'
            }
    
        # 请求网页
        def get_page(self, url):
            res = requests.get(url,headers=self.headers)
            res.encoding = 'utf-8'
            if res.status_code == 200:
                return res.text
            return None
    
        # 利用正则解析网页
        def parse_page(self, url):
            html = self.get_page(url)
            pattern = re.compile('
  • .*?(.*?).*?' '(.*?).*?<.*?"v:average">(.*?).*?(.*?)' '人评价.*?(.*?).*?', re.S) items = re.findall(pattern, html) return items # 将收集的数据写入文档 def write_to_file(self, url): items = self.parse_page(url) for item in items: with open('movietop250.csv', 'a+',newline='') as f: writer = csv.writer(f) writer.writerow(["ID:", item[0], "title:", item[1], "score:", item[2], "count:", item[3], "comment:", item[4]]) # 设置起始页 def main(self, start, end): for i in range(start, end): url = 'https://movie.douban.com/top250?start=' + str(i * 25) time.sleep(1) # 睡眠一秒,防止被封ip self.write_to_file(url) # 执行程序 if __name__ == '__main__': dp = Douban_Spider() # dp.main() t1 = Thread(target=dp.main, args=(0, 5)) t2 = Thread(target=dp.main, args=(5, 11)) t1.start() t2.start() # 启动刚刚创建2个线程 t1.join() t2.join() # 加入join后 ,子线程结束,主线程才结束,运行速度会变慢
  • 上图,爬取豆瓣电影top250成功后的图片
    python爬虫小案例 ✦ 爬取豆瓣电影Top250_第5张图片

    后话

    好了,本次的分享到这里结束。
    有任何疑问欢迎在下方留言哦。

    你可能感兴趣的:(#,Python爬虫案例仓库,豆瓣电影,爬虫,多线程,爬虫小项目,top250)