爬取豆瓣正在上映的影片信息

import requests
from lxml import etree


# 将目标网站上的页面抓取下来
# headers  ->   url  -> requests   -> response
# response.text  返回的是一个经过解码后的字符串,是str(unicode)类型
# response.content 返回的是一个原生的字符串,就是从网页上抓取下来的,没有经过处理的字符串,是bytes类型
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
    'Referer':'https://movie.douban.com/'
}

url = 'https://movie.douban.com/cinema/nowplaying/nanjing/'
response = requests.get(url,headers=headers)
text = response.text

# 将抓取下来的数据根据一定的规则进行提取
html = etree.HTML(text,parser=etree.HTMLParser())    # parser   html解析器
ul = html.xpath("//ul[@class='lists']")[0]    # 获取属性为lists的ul标签内容,因为正在上映和即将上映是一样的,所以取列表的第一个元素,即正在上映的ul
lis = ul.xpath("./li")    # 获取ul标签下的li标签(每部影片在一个li标签下面)
movies = []

for li in lis:
    title = li.xpath("@data-title")[0]   # xpath返回的是一个列表    影片名字
    score = li.xpath("@data-score")[0]   # 影片评分
    release_time = li.xpath("@data-release")[0]  # 上映时间
    time = li.xpath("@data-duration")[0]    # 影片时长
    region = li.xpath("@data-region")[0]   # 制片国家地区
    director = li.xpath("@data-director")[0]  #导演
    actors = li.xpath("@data-actors")[0]   #主演
    category = li.xpath("@data-category")[0]    #上映类型
    image = li.xpath(".//img/@src")[0]   # 图片链接


    movie = {
        'title':title,
        'score':score,
        'release':release_time,
        'time':time,
        'region':region,
        'director':director,
        'actors':actors,
        'category':category,
        'image_link':image
    }

    movies.append(movie)

for movie in movies:
    for value in movie.values():
        print(value + "||",end="")
    print()

猜你喜欢

转载自blog.csdn.net/qq_40727267/article/details/85255997