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
一句话简评: 诺兰给了我们一场无法盗取的梦。
................................
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!