使用python爬虫爬取豆瓣top250电影名

import requests
import re
url = 'https://movie.douban.com/top250'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
resp = requests.get(url,headers = headers)
page_content = resp.text
//re.S 参数可以匹配包括换行在内的所有字符
//?P<name>
ob1 = re.compile(r'<li>.*?<span class="title">(?P<name>.*?)</span>',re.S) //电影名
ob2 = re.compile(r'</span>.*?<br>(?P<year>.*?)&nbsp',re.S)	//导演
ob3 = re.compile(r'<span class="rating_num" property="v:average">.*?(?P<score>.*?)</span>',re.S) //评分
ob4 = re.compile(r'<div class="star">.*?<span>(?P<number>.*?)人评价',re.S) //评价人数
result1 = ob1.finditer(page_content)
result2 = ob2.finditer(page_content)
result3 = ob3.finditer(page_content)
result4 = ob4.finditer(page_content)
for i in result1:
    print(i.group('name'))
for i in result2:
    print(i.group('year').strip())  //strip()函数可以去掉空格
for i in result3:
    print(i.group('score'))
for i in result4:
    print(i.group('number'))

上面这种方式只能依次输出相同项,所以进行一些改进,并将文件保存在csv中。

import requests
import re
import csv

url = 'https://movie.douban.com/top250'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
resp = requests.get(url, headers=headers)
page_content = resp.text
//这种方式的正则表达式要表示的内容是要连续的
ob1 = re.compile(r'<li>.*?<span class="title">(?P<name>.*?)</span>.*?'
                 r'<br>(?P<year>.*?)&n'
                 r'bsp.*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>.*?'
                 r'<span>(?P<number>.*?)</span>', re.S)

result1 = ob1.finditer(page_content)
f = open('250.csv',mode = 'w')
csvwriter = csv.writer(f)
for i in result1:
    print(i.group('name'))
    print(i.group('year').strip())
    print(i.group('score'))
    print(i.group('number'))
    dic = i.groupdict()
    dic['year'] = dic['year'].strip()
    csvwriter.writerow(dic.values())
f.close()
print('over')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值