import requests
import re
from bs4 import BeautifulSoup #从bs4这个库中导入BeautifulSoup
import lxml
import csv
movie_list = ['电影名']
m_eng = ['英文名或别名']
link_list = ['豆瓣链接']
info_list = ['详细信息']
director_list = ['导演']
star_list = ['主演']
score_list = ['评分']
country_list = ['国家']
year_list = ['年份']
type_list = ['类型']
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36','Connection': 'close'}
for i in range(10):
link = "https://movie.douban.com/top250?start=" + str(i*25) +'&filter='
r = requests.get(link, headers=headers,timeout = 30,verify = False)
print(str(i+1),'页码响应码:', r.status_code)
soup = BeautifulSoup(r.text,'html.parser')
html = lxml.etree.HTML(r.text)
link_all = html.xpath('//div[@class = "hd"]/a[1]')
title_all = html.xpath('//div[@class = "hd"]/a/span[1]')
etitle_all = html.xpath('//div[@class = "hd"]/a/span[2]')
info_all = html.xpath('//div[@class = "bd"]/p[1]/text()')
score_all = html.xpath('//div[@class = "star"]/span[2]/text()')
r.close()
#title_movie = title_all[0]
#title_eng = title_all[1]
#title_other = title_all[2]
#movie_list.append(title_movie)
#m_eng.append(title_eng)
#m_other.append(title_other)
#print(score_all)
for index in range(len(link_all)):
movie_list.append(title_all[index].text)
m_eng.append(' '.join(etitle_all[index].text.split()))
link_list.append(link_all[index].attrib['href'])
score_list.append(score_all[index])
info_list.append(' '.join(info_all[2*index].split()))
info_str = ' '.join(info_all[2*index].split())
info2 = re.match(r'(.*?)/(.*)/(.*)',info_all[2*index+1])
print(info_all[2*index+1])
print(info2)
country_list.append(info2.group(2).strip())
year_list.append(info2.group(1).strip())
type_list.append(info2.group(3).strip())
#print(country_list)
#print(index)
#print(info_str)
direc = re.match(r'导演: (.*) 主',info_str)
if direc == None :
director_list.append('')
else:
#print(direc.group(1))
director_list.append(direc.group(1))
star = re.search(r'主演: (.*)', info_str)
#print(star)
if star == None :
star_list.append('')
else:
star_list.append(star.group(1))
#print(star.group(1))
print(movie_list)
print(m_eng)
print(link_list)
#print(info_list)
print(director_list)
print(star_list)
print(score_list)
print(country_list)
print(year_list)
print(type_list)
movie_info = []
with open('Top250 movie.csv','a+',encoding='UTF-8',newline='')as csvfile:
w = csv.writer(csvfile,dialect='excel')
for i, element in enumerate(score_list):
movie_info = [movie_list[i],m_eng[i],country_list[i],year_list[i],type_list[i],director_list[i],star_list[i],score_list[i],link_list[i]]
w.writerow(movie_info)
#print (movie_list)
爬虫程序-豆瓣电影
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 本篇内容需要大家对scrapy框架有了解,并完成了入门学习才能继续使用。 创建项目 scrape startpro...
- github源码下载 首先声明一点,由于豆瓣的api有访问次数限制,应该是一分钟内只允许40次请求,所以需要设置延...
- python爬虫学习给自己定下的第一个小目标, 加油!也希望能得到python大大们的指点, 感谢! 1. 豆瓣抓...
- 在网上阅读有关scrapy的教程也有一段时间了,可是一直没能真正写出能爬出数据的代码。。。今天趁着有点时间,赶快实...