爬取的网页,获取子元素内容的方法

本文介绍在Python爬虫中如何简洁地获取网页子元素内容,以豆瓣电影Top 250为例,利用.requests库爬取数据,通过contents属性提取信息。在分析页面结构后,提取电影排名、评分、电影名和导演等信息,通过遍历和正则表达式匹配实现数据抓取。由于原始方法存在鲁棒性问题,如导演名称过长导致信息缺失,提出更优方案——获取电影详情页URL并逐一解析。
摘要由CSDN通过智能技术生成

今天练习网络爬虫,爬取豆瓣电影Top 250,其中每部电影有排名、评分、电影名、导演等信息,分布在不同的标签下面,而每部电影的所有信息都在一个大的<div>标签下,因此需要获取子元素的内容。查了一下只看到有人用循环嵌套的方法遍历子元素,感觉略麻烦,后来发现.contents属性可以方便地获取子元素内容,因此采用。
首先爬取第一页的内容,将所有电影的信息存入targets,用for循环遍历(使用break的目的是只研究第一部电影的信息,以节省时间):

import requests
import re
import bs4

def parse_one_page(url):
    headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'}
    res = requests.get(url, headers=headers)
    soup = bs4.BeautifulSoup(res.text, 'html.parser')
    targets = soup.find_all('div', class_='item')
    for each in targets:
        print(each)
        break

def main():
    global top250
    top250 = []
    url = 'https://movie.douban.com/top250?start={}&filter='.format(25 * 0)
    parse_one_page(url)

if __name__ == '__main__':
    main()

运行结果如下:

<div class="item">
<div class="pic">
<em class="">1</em>
<a href="https://movie.douban.com/subject/1292052/">
<img alt="肖申克的救赎" class="" src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg" width="100"/>
</a>
</div>
<div class="info">
<div class="hd">
<a class="" href="https://movie.douban.com/subject/1292052/">
<span class="title">肖申克的救赎</span>
<span class="title"> / The Shawshank Redemption</span>
<span class="other"> / 月黑高飞(港)  /  刺激1995(台)</span>
</a>
<span class="playable">[可播放]</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值