Python爬虫的简单使用

本文最后更新于:1 年前

1 - 导入所需要的库

# 时间库 
import time

# 获取网页请求的库
import requests
# 解析网页数据的库
from lxml import html
# 抵御反爬虫的用户申请头的库
from fake_useragent import UserAgent

2 - 两个主要的爬取函数

2.1 获取请求页的text对象

# 参数为需要请求网页的url
# 本例中url = https://movie.douban.com/top250
def get_html(url):
user_agent = UserAgent()
headers = {'user-agent': user_agent.random}
response = requests.get(url, headers=headers)
if response.status_code != 200:
    raise Exception('请检查传入url: ', url)
print(response.status_code)
return response.text

2.2 主函数

if __name__ == '__main__':

    html_str = get_html(url)
    # 构造解析树对象
    etree = html.etree
    html = etree.HTML(html_str)

    //*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1] # 排名第一的电影
    //*[@id="content"]/div/div[1]/ol/li[2]/div/div[2]/div[1]/a/span[1] # 排名第二的电影
    //*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[2]/p[1] # 电影的信息的xpath路径
    //*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[2]/div/span[2] # 电影的评分的xpath路径
    //*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[2]/p[2]/span # 电影简评
    spans = html.xpath('//*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span')

    # 以下xpath路径,均为相对路径
    li_movies = html.xpath('//*[@id="content"]/div/div[1]/ol/li')
    for li in li_movies:
        spans = li.xpath('./div/div[2]/div[1]/a/span')
        movie_title = ''
        for span in spans:
            movie_title += span.text
        # 电影信息
        movie_info = li.xpath('./div/div[2]/div[2]/p[1]')[0].text

        # 电影评分
        movie_score = li.xpath('./div/div[2]/div[2]/div/span[2]/text()')[0]

        # 电影简评
        movie_intro = li.xpath('./div/div[2]/div[2]/p[2]/span/text()')[0]

        print(movie_title, movie_info,
        '\n电影评分: ', movie_score,
        '\n一句话简评: ', movie_intro, '\n')

3 - 输出示例

肖申克的救赎 / The Shawshank Redemption / 月黑高飞(港)  /  刺激1995(台) 
                        导演: 弗兰克·德拉邦特 Frank Darabont   主演: 蒂姆·罗宾斯 Tim Robbins /... 
电影评分:  9.7 
一句话简评:  希望让人自由。

霸王别姬 / 再见,我的妾  /  Farewell My Concubine 
                        导演: 陈凯歌 Kaige Chen   主演: 张国荣 Leslie Cheung / 张丰毅 Fengyi Zha... 
电影评分:  9.6 
一句话简评:  风华绝代。

阿甘正传 / Forrest Gump / 福雷斯特·冈普 
                        导演: 罗伯特·泽米吉斯 Robert Zemeckis   主演: 汤姆·汉克斯 Tom Hanks / ... 
电影评分:  9.5 
一句话简评:  一部美国近现代史。

这个杀手不太冷 / Léon / 杀手莱昂  /  终极追杀令(台) 
                        导演: 吕克·贝松 Luc Besson   主演: 让·雷诺 Jean Reno / 娜塔莉·波特曼 ... 
电影评分:  9.4 
一句话简评:  怪蜀黍和小萝莉不得不说的故事。

泰坦尼克号 / Titanic / 铁达尼号(港 / 台) 
                        导演: 詹姆斯·卡梅隆 James Cameron   主演: 莱昂纳多·迪卡普里奥 Leonardo... 
电影评分:  9.4 
一句话简评:  失去的才是永恒的。 

美丽人生 / La vita è bella / 一个快乐的传说(港)  /  Life Is Beautiful 
                        导演: 罗伯托·贝尼尼 Roberto Benigni   主演: 罗伯托·贝尼尼 Roberto Beni... 
电影评分:  9.5 
一句话简评:  最美的谎言。

千与千寻 / 千と千尋の神隠し / 神隐少女(台)  /  千与千寻的神隐 
                        导演: 宫崎骏 Hayao Miyazaki   主演: 柊瑠美 Rumi Hîragi / 入野自由 Miy... 
电影评分:  9.4 
一句话简评:  最好的宫崎骏,最好的久石让。

辛德勒的名单 / Schindler's List / 舒特拉的名单(港)  /  辛德勒名单 
                        导演: 史蒂文·斯皮尔伯格 Steven Spielberg   主演: 连姆·尼森 Liam Neeson... 
电影评分:  9.5 
一句话简评:  拯救一个人,就是拯救整个世界。

盗梦空间 / Inception / 潜行凶间(港)  /  全面启动(台) 
                        导演: 克里斯托弗·诺兰 Christopher Nolan   主演: 莱昂纳多·迪卡普里奥 Le... 
电影评分:  9.3 
一句话简评:  诺兰给了我们一场无法盗取的梦。
................................