python网页抓取

《python网络爬虫从入门到实践》学习总结
在网站设计中,一般分为静态网页和动态网页,静态网页一般是纯粹的HTML格式,AJAX动态加载网页的数据不一定会出现在HTML代码中(例如:天猫的某产品页面中评论,其URL地址并没有发生改变,但其评论部分却一直在更新。)

静态网页抓取

python中静态网页的抓取一般使用requests库,可通过pip安装。
1、可通过request.get输入网站链接即可获取该网页的内容。
2、有些网页需要对requests的参数例如URL参数、定制请求头、发送POST请求、设置超时等进行设置才能获取。

(1)其中请求头Headers提供了关于请求、响应或其他发送实体的信息。在某些网页中,如果没有指定请求头或请求头和网页不一致,则可能无法捕获到正确信息。
(2)关于请求头信息的获取已在https://blog.csdn.net/sunshine2304/article/details/129026354中表明。(https://blog.csdn.net/sunshine2304/article/details/129026354)
另外可通过requests.post传递一个data参数,将数据字典自动编码为表单形式。
(3)requests可设定timeout参数停止等待响应。
例(参考《python网络爬虫从入门到实践2》):
获取豆瓣电影TOP250网页

import requests
from bs4 import BeautifulSoup
import lxml

def get_movies():
    headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',
    'Host': 'movie.douban.com'
    }  #网页指定请求头headers
    movie_list = []
    #每一页是25个电影,所以需要捕获10页的信息
    for i in range(0,10):
        link = 'https://movie.douban.com/top250?start=' + str(i * 25)
        r = requests.get(link, headers=headers, timeout= 10)
        print (str(i+1),"页响应状态码:", r.status_code)
        #响应状态码为200表示请求成功,若为4xx表示客户端失败,若为5xx表示服务器错误响应
        
        soup = BeautifulSoup(r.text, "lxml")#使用beautifulsoup对网页进行解析并获取其中电影数据
        div_list = soup.find_all('div', class_='hd')#查找元素
        for each in div_list:
            movie = each.a.span.text.strip() #提取a元素中字符串,并去除左右空格
            movie_list.append(movie)
    return movie_list
        
movies = get_movies()
print (movies)

结果如下:

1 页响应状态码: 200
2 页响应状态码: 200
3 页响应状态码: 200
4 页响应状态码: 200
5 页响应状态码: 200
6 页响应状态码: 200
7 页响应状态码: 200
8 页响应状态码: 200
9 页响应状态码: 200
10 页响应状态码: 200
['肖申克的救赎', '霸王别姬', '阿甘正传', '泰坦尼克号', '这个杀手不太冷', '美丽人生', '千与千寻', '辛德勒的名单', '盗梦空间', '星际穿越', '楚门的世界', '忠犬八公的故事', '海上钢琴师', '三傻大闹宝莱坞', '放牛班的春天', '机器人总动员', '无间道', '疯狂动物城', '控方证人', '大话西游之大圣娶亲', '熔炉', '教父', '当幸福来敲门', '触不可及', '怦然心动', '龙猫', '末代皇帝', '寻梦环游记', '活着', '蝙蝠侠:黑暗骑士', '哈利·波特与魔法石', '指环王3:王者无敌', '乱世佳人', '素媛', '我不是药神', '飞屋环游记', '何以为家', '摔跤吧!爸爸', '十二怒汉', '哈尔的移动城堡', '鬼子来了', '少年派的奇幻漂流', '猫鼠游戏', '让子弹飞', '钢琴家', '海蒂和爷爷', '大话西游之月光宝盒', '天空之城', '指环王2:双塔奇兵', '闻香识女人', '天堂电影院', '罗马假日', '绿皮书', '大闹天宫', '死亡诗社', '指环王1:护戒使者', '黑客帝国', '教父2', '狮子王', '辩护人', '饮食男女', '搏击俱乐部', '美丽心灵', '本杰明·巴顿奇事', '穿条纹睡衣的男孩', '窃听风暴', '情书', '两杆大烟枪', '西西里的美丽传说', '音乐之声', '看不见的客人', '阿凡达', '拯救大兵瑞恩', '飞越疯人院', '小鞋子', '哈利·波特与死亡圣器(下)', '沉默的羔羊', '禁闭岛', '布达佩斯大饭店', '致命魔术', '蝴蝶效应', '海豚湾', '心灵捕手', '功夫', '美国往事', '低俗小说', '摩登时代', '春光乍泄', '哈利·波特与阿兹卡班的囚徒', '喜剧之王', '超脱', '致命ID', '七宗罪', '杀人回忆', '红辣椒', '加勒比海盗', '狩猎', '哈利·波特与密室', '被嫌弃的松子的一生', '7号房的礼物', '请以你的名字呼唤我', '一一', '唐伯虎点秋香', '断背山', '剪刀手爱德华', '勇敢的心', '入殓师', '爱在黎明破晓前', '第六感', '重庆森林', '蝙蝠侠:黑暗骑士崛起', '幽灵公主', '超能陆战队', '菊次郎的夏天', '天使爱美丽', '爱在日落黄昏时', '阳光灿烂的日子', '小森林 夏秋篇', '甜蜜蜜', '完美的世界', '借东西的小人阿莉埃蒂', '消失的爱人', '无人知晓', '倩女幽魂', '小森林 冬春篇', '侧耳倾听', '时空恋旅人', '寄生虫', '幸福终点站', '驯龙高手', '萤火之森', '教父3', '一个叫欧维的男人决定去死', '怪兽电力公司', '未麻的部屋', '玩具总动员3', '哈利·波特与火焰杯', '傲慢与偏见', '釜山行', '玛丽和马克思', '神偷奶爸', '被解救的姜戈', '告白', '新世界', '大鱼', '哪吒闹海', '射雕英雄传之东成西就', '阳光姐妹淘', '头号玩家', '我是山姆', '模仿游戏', '喜宴', '恐怖直播', '血战钢锯岭', '花样年华', '七武士', '九品芝麻官', '头脑特工队', '色,戒', '黑客帝国3:矩阵革命', '茶馆', '惊魂记', '电锯惊魂', '你的名字。', '三块广告牌', '达拉斯买家俱乐部', '疯狂原始人', '心迷宫', '卢旺达饭店', '上帝之城', '谍影重重3', '英雄本色', '风之谷', '纵横四海', '海街日记', '绿里奇迹', '爱在午夜降临前', '记忆碎片', '岁月神偷', '忠犬八公物语', '荒蛮故事', '疯狂的石头', '爆裂鼓手', '小偷家族', '无敌破坏王', '雨中曲', '贫民窟的百万富翁', '2001太空漫游', '冰川时代', '背靠背,脸对脸', '无间道2', '小丑', '恐怖游轮', '东邪西毒', '真爱至上', '你看起来好像很好吃', '遗愿清单', '牯岭街少年杀人事件', '魔女宅急便', '黑天鹅', '东京教父', '心灵奇旅', '大佛普拉斯', '可可西里', '城市之光', '雨人', '恋恋笔记本', '源代码', '初恋这件小事', '海边的曼彻斯特', '虎口脱险', '人工智能', '波西米亚狂想曲', '萤火虫之墓', '青蛇', '终结者2:审判日', '罗生门', '疯狂的麦克斯4:狂暴之路', '新龙门客栈', '奇迹男孩', '千钧一发', '二十二', '无耻混蛋', '崖上的波妞', '彗星来的那一夜', '黑客帝国2:重装上阵', '血钻', '房间', '步履不停', '末路狂花', '战争之王', '魂断蓝桥', '爱乐之城', '花束般的恋爱', '火星救援', '谍影重重2', '千年女优', '哈利·波特与死亡圣器(上)', '芙蓉镇', '燃情岁月', '阿飞正传', '弱点', '谍影重重', '再次出发之纽约遇见你', '朗读者', '香水', '海洋', '穿越时空的少女', '地球上的星星', '我爱你']

(以上代码由自己分步实现完成,粘贴过程中可能存在部分缺失,请谅解)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值