欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

豆瓣电影排行python爬虫实战(刚开始学习)

程序员文章站 2022-05-02 17:43:37
...

作为一名刚学了几天的新手 在这里只使用了request 和 re 库

分析网页    https://movie.douban.com/top250?start=0&filter=  注意 start 每次下一页就会+25

正则 :观察网页源代码得到

  电影名 titlepat = 'class="">.*?<span class="title">(.*?)</span>'

  人数      countpat = '<span>(.*?)人评价</span>'

  评分      gradepat = ' <span class="rating_num" property="v:average">(.*?)</span>'

  短评       briefcommentpat = '<span class="inq">(.*?)</span>'

 

对于向文件的存取有很多不足之处 没有进行很深的了解 若有好的建议求大牛指教

以下是源码:

import requests
import re

def geturl(url):
    headers = {'User-Agent':'Mozilla/50'}
    r = requests.get(url,headers=headers)
    r.encoding = r.apparent_encoding
    return r.text

def getdata(url):
    data = geturl(url)
    titlepat = 'class="">.*?<span class="title">(.*?)</span>'
    countpat = '<span>(.*?)人评价</span>'
    gradepat = ' <span class="rating_num" property="v:average">(.*?)</span>'
    briefcommentpat = '<span class="inq">(.*?)</span>'
    titles = re.compile(titlepat,re.S).findall(data)
    counts = re.compile(countpat).findall(data)
    grades = re.compile(gradepat).findall(data)
    briefcomments = re.compile(briefcommentpat).findall(data)
    print(titles)
    print(counts)
    print(grades)
    print(briefcomments)
    f = open("豆瓣电影排名.txt", 'a')
    for i in range(0,len(briefcomments)):
        f.write('名称:'+titles[i]+'\t')
        f.write('评分:'+grades[i] + '\t')
        f.write('人数:'+counts[i] + '\n')
        f.write(briefcomments[i] + '\n')
    f.close()

if '__main__'==__name__:
    page=0
    while page<=225:
        print(page)
        url = "https://movie.douban.com/top250?start="+str(page)
        getdata(url)
        page+=25

相关标签: 爬虫 豆瓣