爬取豆瓣电影top250(正则表达式)

进入https://movie.douban.com/top250?,查看网页源代码。查看HTML的标签,找一个最近的且能定位到电影信息的标签。

  • 。然后找一个可以定位电影名或者年份前面的部分。

    re.compile(r'
  • .*?(?P.*?).*?

    ' r'.*?
    (?P.*?) .*?',re.S)

  • 爬取豆瓣电影top250(正则表达式)_第1张图片

    利用正则finditer去找标记的内容name,year。如果直接去输出的话,会有一点小问题,这个网页年分前面是空白回车。此时输出的内容会多了一行。所以要进行修改

    爬取豆瓣电影top250(正则表达式)_第2张图片 

    print(i.group('year').strip())

    网页的第二页和第三页发现只是start多了25其他不变。这时我们做一个循环爬取网页全部代码保存起来。

     

    for i in range(10):
        query = i*25
        url = f'https://movie.douban.com/top250?start={query}&filter='
        head = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.43"
        }
        resp = requests.get(url, headers=head)
        #print(resp.text)
        abc = resp.text
        with open('top250.txt','a',encoding='utf-8') as f:
            print(abc,file=f)
        resp.close()

    爬取网页的全部代码之后,利用上面的正则表达式规则进行筛选就行了。

    完整代码:

    import requests
    import re
    import csv
    import os
    
    for i in range(10):
        query = i*25
        url = f'https://movie.douban.com/top250?start={query}&filter='
        head = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.43"
        }
        resp = requests.get(url, headers=head)
        #print(resp.text)
        abc = resp.text
        with open('top250.txt','a',encoding='utf-8') as f:
            print(abc,file=f)
        resp.close()
    
    fp = open('top250.txt',encoding='utf-8')
    c = fp.read()
    fp.close()
    
    page_contnet =c
    
    patten = re.compile(r'
  • .*?(?P.*?).*?

    ' r'.*?
    (?P.*?) .*?',re.S) result = patten.finditer(page_contnet) f = open('doubantop250.csv','w') csvwriter = csv.writer(f) for i in result: dic = i.groupdict() dic['year']=dic['year'].strip() csvwriter.writerow(dic.values()) f.close() print('over')

  •  

     

  • 你可能感兴趣的:(爬虫,正则表达式)