需求分析:

爬取豆瓣电影网站上的正在上映的电影相关信息。

步骤:

1.将目标网站上的页面抓取下来
2.将抓取下来的数据根据一定的规则进行提取


import requests from lxml import etree  #1.将目标网站上的页面抓取下来 headers = {     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36',     'Referer': 'https://movie.douban.com/' } url= 'https://movie.douban.com/cinema/nowplaying/beijing/' response = requests.get(url,headers=headers) #print(response) text = response.text#返回的是经过解码后的字符串,str类型 #print(text) # text = response.content.decode('utf-8')#返回的是原生字符串,bytes类型,若目标网页不标准,则用这个 # print(text)  #2.将抓取下来的数据根据一定的规则进行提取 html = etree.HTML(text) ul = html.xpath("//ul[@class='lists']")[0] #print(ul)   结果出现了两个对象,不对 # for ul in ul: #     print(etree.tostring(ul,encoding='utf-8').decode('utf-8'))  查看这两个是什么原来即将上映和现在上映两个都用到了相同的 #class属性,我们需要的是正在上映,故再ul前面加一个【0】,只获得列表的第一个 lis = ul.xpath("./li")#获取ul下面的所有li属性 movies = [] #创建一个movies列表来储存提取到的信息 for li in lis:     #print(etree.tostring(li, encoding='utf-8').decode('utf-8'))     title = li.xpath('@data-title')[0]     #print(title)     score = li.xpath('@data-score')[0]     duration = li.xpath('@data-duration')[0]     region = li.xpath('@data-region')[0]     director = li.xpath('@data-director')[0]     actors = li.xpath('@data-actors')[0]     thumbnail = li.xpath(".//img/@src")[0]     movie = {         'title': title,         'score': score,         'duration': duration,         'region': region,         'director': director,         'actors': actors,         'thumbnail': thumbnail     }     movies.append(movie) print(movies)


结果:

。。。。