暑假又来了,看电视剧?多浪费时间,何不回味经典呢,对吧,下面和大家一起爬取豆瓣250.相信这应该是和我一样的小白必走过的路吧,没有什么反爬,很适合我这样的小白,所有网站都这样多好(狗头)哈哈。
下面先看爬取的结果吧
感觉提取发行时间,发行国家,和电影类型的可能不像电影名那样直接。
直接上代码吧
import requests
import parsel
import re
import time
for page in range(10):
print('**********************正在爬取第{}页************************'.format(str(page+1)))
base_url='https://movie.douban.com/top250?start={}&filter='.format(str(page))
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}
response=requests.get(base_url,headers=headers)
#print(response)
response.encoding=response.apparent_encoding
selector=parsel.Selector(response.text)
lis=selector.xpath('//ol[@class="grid_view"]/li')
#print(len(lis))
for li in lis:
title=li.xpath('.//span[@class="title"]/text()').get()
#print(title)
star=li.xpath('.//div[@class="bd"]/p[1]/text()').get().strip()
#print(star)
relaetime=li.xpath('.//div[@class="bd"]/p[1]').re('\d{4}')[0]
#print(relaetime)
score=li.xpath('.//span[@class="rating_num"]/text()').get()
#print(score)
guojia=li.xpath('.//div[@class="bd"]/p').get()
guojia=guojia.split('<br>')[1]
nation=re.findall(' \d{4}.*?/.*?(.*?)/.*?(.*?)</p>',guojia,re.S)[0][0]
type=re.findall(' \d{4}.*?/.*?(.*?)/.*?(.*?)</p>',guojia,re.S)[0][1].strip()
#print(nation,type)
with open('电影.csv',mode='a',encoding='utf-8')as f:
f.write(f'{title},{relaetime},{score},{nation},{type},{star}')
f.write('\n')
print('¥¥¥¥¥¥¥¥¥¥¥¥¥¥第{}页爬取成功¥¥¥¥¥¥¥¥¥¥¥¥¥¥'.format(str(page+1)))
time.sleep(3)
嘿嘿,祝大家有个愉快的暑假。