(7)Python爬虫——爬取豆瓣电影Top250

使用Python爬取并导出豆瓣电影Top250信息至Excel

利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中。基本上爬取结果还是挺好的。具体代码如下:

#!/usr/bin/python
#-*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from bs4 import BeautifulSoup
import re
import urllib2
import xlwt

#得到页面全部内容
def askURL(url):
    request = urllib2.Request(url)#发送请求
    try:
        response = urllib2.urlopen(request)#取得响应
        html= response.read()#获取网页内容
        #print html
    except urllib2.URLError, e:
        if hasattr(e,"code"):
            print e.code
        if hasattr(e,"reason"):
            print e.reason
    return html

#获取相关内容
def getData(baseurl):
    findLink=re.compile(r'<a href="(.*?)"
### 编写Python爬虫抓取豆瓣电影Top250数据 为了实现这一目标,在Jupyter Notebook中可以按照如下方式构建并执行代码。需要注意的是,由于网站反爬机制的存在,适当加入请求头模拟浏览器行为以及控制访问频率是非常必要的。 #### 导入库文件 首先确保安装了`requests`和`lxml`库用于发起HTTP请求和解析HTML文档;另外还需要导入`pandas`来处理后续可能的数据整理工作。 ```python import requests from lxml import etree import pandas as pd import time ``` #### 设置URL模板与头部信息 定义好要访问的目标页面链接模式,并设置合理的User-Agent字段以伪装成正常用户的浏览习惯。 ```python url_pattern = 'https://movie.douban.com/top250?start={}' headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } ``` #### 获取单页内容函数 创建一个专门用来获取指定索引位置处网页源码的方法,这里通过调整参数中的起始偏移量(start),可以从不同分页加载对应的内容片段[^1]。 ```python def get_page_content(page_index): url = url_pattern.format(str(page_index * 25)) response = requests.get(url=url, headers=headers) return response.text if response.status_code == 200 else None ``` #### 解析HTML结构提取所需信息 利用XPath表达式定位到具体的标签节点下,从中抽取影片名称、评分等重要属性值作为最终保存下来的关键要素之一[^2]。 ```python def parse_html(html_str): html_tree = etree.HTML(html_str) movie_items = [] titles = html_tree.xpath('//div[@class="hd"]/a/span[1]/text()') scores = html_tree.xpath('//span[@class="rating_num"]//text()') for i in range(len(titles)): item_dict = {"title":titles[i].strip(), "score":scores[i]} movie_items.append(item_dict) return movie_items ``` #### 主逻辑流程设计 结合上述辅助功能模块完成整个任务的核心部分——遍历多页结果集并将所有记录汇总起来形成完整的列表对象供下一步操作使用。 ```python all_movies = [] for page_idx in range(10): # 总共十页,每页显示25部作品 content = get_page_content(page_idx) movies_on_this_page = parse_html(content) all_movies.extend(movies_on_this_page) time.sleep(2) # 防止触发反爬措施 df = pd.DataFrame(all_movies) print(df.head()) ``` 以上就是在Jupyter Notebook环境下运用Python编写的简单版豆瓣电影Top250榜单爬虫实例。当然实际应用过程中还涉及到更多细节优化空间比如异常捕获机制的设计等等。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值